• c#图片下载的标准写法


    MemoryStream的介绍:http://www.cnblogs.com/JimmyZheng/archive/2012/04/14/2446507.html

    bitmap.Save(strOutputPathJpg, System.Drawing.Imaging.ImageFormat.Png);
    using (Bitmap bmp = new Bitmap(@"D:\map\v10-841-142-1357879384609.jpg")) { ImageFormat format = bmp.RawFormat; Console.WriteLine(format); Console.WriteLine(); } 虽然扩展名为jpg 但确实是PNG 判断依据是:Guid互相对应。。。这里的GUID是怎么规定的 how why

    下一次再试一次。
    bmp Guid = {b96b3cab-0728-11d3-9d7b-0000f81ef32e}
    emf  Guid = {b96b3cac-0728-11d3-9d7b-0000f81ef32e}
    exif   Guid = {b96b3cb2-0728-11d3-9d7b-0000f81ef32e}
    gif    Guid = {b96b3cb0-0728-11d3-9d7b-0000f81ef32e}
    Guid = {b96b3cb5-0728-11d3-9d7b-0000f81ef32e} icon
    Guid = {b96b3cae-0728-11d3-9d7b-0000f81ef32e} jepg
    Guid = {b96b3caa-0728-11d3-9d7b-0000f81ef32e} memorymap
    Guid = {b96b3caf-0728-11d3-9d7b-0000f81ef32e} png
    Guid = {b96b3cb1-0728-11d3-9d7b-0000f81ef32e} tiff
    Guid = {b96b3cad-0728-11d3-9d7b-0000f81ef32e} wmf

    图片下载的标准写法
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net;
    using System.IO;
    using System.Drawing;
    using System.Drawing.Imaging;

    namespace cn.tianditu.crawl.tile.core
    {
        public class HttpUtil
        {
            public static void DownImg(TileUri uri)
            {
                HttpWebResponse response = null;
                Stream stream = null;
                FileStream writer = null;

                try
                {
                    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri.Url);
                    request.Timeout = 60 * 1000;
                    response = (HttpWebResponse)request.GetResponse();

                    uri.HttpStatus = response.StatusCode;
                    if (response.StatusCode != HttpStatusCode.OK)
                    {
                        Console.WriteLine(response.StatusCode);
                        return;
                    }

                    stream = response.GetResponseStream();
                    using (Image bitmap = Image.FromStream(stream))//如果不是图片这里会异常
                    {
                        String ext = RecognizeImgExtName(bitmap.RawFormat);
                        String imgFileName = uri.FileNameNoExt + ext;
                        using (MemoryStream ms = new MemoryStream())
                        {
                            bitmap.Save(ms, bitmap.RawFormat);
                            Byte[] bytes = ms.ToArray();
                            int size = bytes.Length;//可以在这里根据图像大小进行过滤
                            writer = new FileStream(imgFileName, FileMode.OpenOrCreate, FileAccess.Write);
                            writer.Write(bytes, 0, size);
                        }
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    uri.DownFailedReason = e;
                }
                finally
                {
                    if (writer != null)
                    {
                        writer.Close();
                        writer.Dispose();
                    }
                    if (stream != null)
                    {
                        stream.Close();
                        stream.Dispose();
                    }
                    if (response != null)
                    {
                        response.Close();
                    }
                }
            }

            private static string RecognizeImgExtName(ImageFormat imageFormat)
            {
                if (imageFormat.Equals(ImageFormat.Png))
                {
                    return ".png";
                }
                else if (imageFormat.Equals(ImageFormat.Jpeg))
                {
                    return ".jpg";
                }
                else if (imageFormat.Equals(ImageFormat.Bmp))
                {
                    return ".bmp";
                }
                else if (imageFormat.Equals(ImageFormat.Gif))
                {
                    return ".gif";
                }
                else if (imageFormat.Equals(ImageFormat.Icon))
                {
                    return ".icon";
                }
                else if (imageFormat.Equals(ImageFormat.Exif))
                {
                    return ".exif";
                }
                else if (imageFormat.Equals(ImageFormat.Tiff))
                {
                    return ".tiff";
                }
                else if (imageFormat.Equals(ImageFormat.Emf))
                {
                    return ".emf";
                }
                throw new Exception("不能识别的图片格式(ImageFormat)");
            }
        }
    }

  • 相关阅读:
    【ASP.Net MVC】在AspNet Mvc使用JQuery AutoComplete组件
    Jquery AutoComplete的使用方法实例
    .Net使用Redis详解之ServiceStack.Redis(七)
    Redis系列之key操作命令与Redis中的事务详解(六)
    Redis数据结构详解之Zset(五)
    redis数据结构详解之Hash(四)
    Redis数据结构详解之Set(三)
    Redis数据结构详解之List(二)
    Redis数据结构详解(一)
    WCF配置文件详解(一)
  • 原文地址:https://www.cnblogs.com/i80386/p/2856242.html
Copyright © 2020-2023  润新知