首页 > 编程 > C# > 正文

C#根据http和ftp图片地址获取对应图片

2020-01-24 00:36:01
字体:
来源:转载
供稿:网友

本文实例为大家分享了C#根据http和ftp地址获取对应图片的具体代码,供大家参考,具体内容如下

public class GetBitmapImageClass {  public BitmapSource GetImageHttp(string url,int width)  {   var image = new BitmapImage();   int BytesToRead = 100;   if (!string.IsNullOrEmpty(url))   {    WebRequest request = WebRequest.Create(new Uri(url, UriKind.Absolute));    request.Timeout = -1;    WebResponse response = request.GetResponse();    Stream responseStream = response.GetResponseStream();    BinaryReader reader = new BinaryReader(responseStream);    MemoryStream memoryStream = new MemoryStream();    byte[] bytebuffer = new byte[BytesToRead];    int bytesRead = reader.Read(bytebuffer, 0, BytesToRead);    while (bytesRead > 0)    {     memoryStream.Write(bytebuffer, 0, bytesRead);     bytesRead = reader.Read(bytebuffer, 0, BytesToRead);    }    image.BeginInit();    image.DecodePixelWidth = width;    image.CacheOption = BitmapCacheOption.OnLoad;    memoryStream.Seek(0, SeekOrigin.Begin);    image.StreamSource = memoryStream;    image.EndInit();    image.Freeze();    memoryStream.Close();    reader.Close();    responseStream.Close();    response.Close();   }   return image;  }  public BitmapSource GetImageFtp(string url, int width)  {   var image = new BitmapImage();   if (!string.IsNullOrEmpty(url))   {    FtpWebRequest reqFtp;    reqFtp = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));    reqFtp.Method = WebRequestMethods.Ftp.DownloadFile;    reqFtp.UseBinary = true;    FtpWebResponse response = (FtpWebResponse)reqFtp.GetResponse();    Stream ftpStream = response.GetResponseStream();    MemoryStream mStream = new MemoryStream();    ftpStream.CopyTo(mStream);    mStream.Position = 0;    int length = (int)mStream.Length;    byte[] returnbyte = new byte[length];    mStream.Read(returnbyte, 0, length);    mStream.Close();    ftpStream.Close();    response.Close();    System.IO.MemoryStream stream = new System.IO.MemoryStream(returnbyte);    image.BeginInit();    image.DecodePixelWidth = width;    image.CacheOption = BitmapCacheOption.OnLoad;    stream.Seek(0, SeekOrigin.Begin);    image.StreamSource = stream;    image.EndInit();    image.Freeze();    stream.Close();   }   return image;  }  [DllImport("gdi32.dll", SetLastError = true)]  private static extern bool DeleteObject(IntPtr hObject);  public BitmapSource ToBitmapSource(System.Drawing.Bitmap bmp)  {   try   {    var ptr = bmp.GetHbitmap();    var source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(     ptr, IntPtr.Zero, Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());    DeleteObject(ptr);    return source;   }   catch   {    return null;   }  }  //获取缩略图  public BitmapSource GetBitImage(string imageLink)  {   //"http://172.17.1.231:8083/3050273262379466760/2017/05/28/09/340800100999/09163448402.jpg?fid=1267520"   if (imageLink.StartsWith("http://"))   {    return GetImageHttp(imageLink,200);   }   //ftp格式的   else if (imageLink.StartsWith("ftp://"))   {    return GetImageFtp(imageLink, 200);   }  }  //获取原图  public BitmapSource GetHightBitImage(string imageLink)  {   //"http://172.17.1.231:8083/3050273262379466760/2017/05/28/09/340800100999/09163448402.jpg?fid=1267520"   if (imageLink.StartsWith("http://"))   {    return GetImageHttp(imageLink, 0);   }   //ftp格式的   else if (imageLink.StartsWith("ftp://"))   {    return GetImageFtp(imageLink, 0);   }  } }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表