zoukankan      html  css  js  c++  java
  • 从网络中获取图片显示到Image控件并保存到磁盘

    一、从网络中获取图片信息:

     1   /// <summary>
     2         /// 获取图片
     3         /// </summary>
     4         /// <param name="url">Url</param>
     5         /// <returns>BitmapImage</returns>
     6         public BitmapImage GetImage(string url)
     7         {
     8             BitmapImage image=null;
     9             try
    10             {
    11                 image = new BitmapImage();
    12                 long fileLength = 0;
    13                 //从url指定的网络地址获取图片信息
    14                 WebRequest webReq = WebRequest.Create(url);
    15                 WebResponse webRes = webReq.GetResponse();
    16                 fileLength = webRes.ContentLength;
    17                 Stream srm = webRes.GetResponseStream();
    18                 byte[] bufferbyte = new byte[fileLength];
    19                 int allByte = (int) bufferbyte.Length;
    20                 int startByte = 0;
    21                 while (fileLength > 0)
    22                 {
    23                     int downByte = srm.Read(bufferbyte, startByte, allByte);
    24                     if (downByte == 0)
    25                     {
    26                         break;
    27                     }
    28                     startByte += downByte;
    29                     allByte -= downByte;
    30                 }
    31                 //以流的形式初始化图片                                                                                                 
    32                 image.BeginInit();
    33                 image.StreamSource = new MemoryStream(bufferbyte);
    34                 image.EndInit();
    35                 srm.Close();
    36                 webRes.Close();
    37             }
    38             catch (Exception)
    39             {
    40                 Console.WriteLine("获取图片信息失败");
    41             }
    42             return image;
    43         }
    View Code

    二、在Image控件中显示获取到的图片

    1   public void ShowImage(BitmapImage img)
    2         {
    3             image.Source = img;
    4             image.Width = img.PixelWidth;
    5             image.Height = img.PixelHeight;
    6         }
    View Code

    image是Image控件

    三、保存Image到磁盘

     1  /// <summary>
     2         /// 保存图片到磁盘
     3         /// </summary>
     4         /// <param name="img"></param>
     5         public void SaveImage(Image img)
     6         {
     7             //img为Image控件
     8             BitmapSource bsrc = (BitmapSource)img.Source;
     9             //保存文件对话框
    10             SaveFileDialog sf = new SaveFileDialog();
    11             //设定默认保存类型为Png
    12             sf.DefaultExt = ".png";
    13             //指定用户只能下载jpg和png格式的图片
    14             sf.Filter = "JPG 图片 (*.jpg)|*.jpg|PNG 图片 (*.png)|*.png";
    15             if (sf.ShowDialog() == true)
    16             {
    17                 PngBitmapEncoder pngE = new PngBitmapEncoder();
    18                 pngE.Frames.Add(BitmapFrame.Create(bsrc));
    19                 using (Stream stream = File.Create(sf.FileName))
    20                 {
    21                     pngE.Save(stream);
    22                 }
    23             }
    24         }
    View Code
  • 相关阅读:
    【BZOJ3533】向量集(SDOI2014)-线段树+凸壳+二分
    【BZOJ4869】相逢是问候(六省联考2017)-扩展欧拉定理+线段树
    【BZOJ4012】开店(HNOI2015)-动态点分治+set
    【BZOJ1095】捉迷藏(ZJOI2007)-动态点分治+堆
    【BZOJ2299】向量(HAOI2011)-裴蜀定理
    【BZOJ4942】整数(NOI2017)-线段树+压位
    【BZOJ3594】方伯伯的玉米田(SCOI2014)-DP+二维树状数组
    背包DP专题
    【2018.11.7】【luoguNOIp 热身赛】解题报告及总结
    【一天一DP计划】状压DP
  • 原文地址:https://www.cnblogs.com/OnlyVersion/p/4503714.html
Copyright © 2011-2022 走看看