zoukankan      html  css  js  c++  java
  • 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)");
            }
        }
    }

  • 相关阅读:
    Oracle备份恢复之无备份情况下恢复undo表空间
    Oracle HA 之 测试RAC的功能
    (转)Python——functools
    (转)Python标准库:内置函数print(*objects, sep=' ', end=' ', file=sys.stdout, flush=False)
    (转)用Python写堡垒机项目
    (转)Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)
    (转)Linux中的位图
    (转)Python标准库02 时间与日期 (time, datetime包)
    (转)Python 3 collections.defaultdict() 与 dict的使用和区别
    (转)python高级:列表解析和生成表达式
  • 原文地址:https://www.cnblogs.com/i80386/p/2856242.html
Copyright © 2011-2022 走看看