获取http和ftp地址的图片
2018-06-22 07:21:14来源:未知 阅读 ()
根据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); } } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- MVC 5限制所有HTTP请求必须是POST方式 2020-03-14
- .NET下通过HttpListener实现简单的Http服务 2020-02-27
- asp.net获取当前页面URL的方法 2020-01-20
- .NET中获取程序根目录的常用方法介绍 2019-12-13
- ASP.NET在MVC控制器中获取Form表单值的方法 2019-11-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash