根据http和ftp图片地址获取对应图片的缩略图和原图

  1. public class GetBitmapImageClass
  2. {
  3. public BitmapSource GetImageHttp(string url,int width)
  4. {
  5. var image = new BitmapImage();
  6. int BytesToRead = ;
  7. if (!string.IsNullOrEmpty(url))
  8. {
  9. WebRequest request = WebRequest.Create(new Uri(url, UriKind.Absolute));
  10. request.Timeout = -;
  11. WebResponse response = request.GetResponse();
  12. Stream responseStream = response.GetResponseStream();
  13. BinaryReader reader = new BinaryReader(responseStream);
  14. MemoryStream memoryStream = new MemoryStream();
  15.  
  16. byte[] bytebuffer = new byte[BytesToRead];
  17. int bytesRead = reader.Read(bytebuffer, , BytesToRead);
  18.  
  19. while (bytesRead > )
  20. {
  21. memoryStream.Write(bytebuffer, , bytesRead);
  22. bytesRead = reader.Read(bytebuffer, , BytesToRead);
  23. }
  24.  
  25. image.BeginInit();
  26. image.DecodePixelWidth = width;
  27. image.CacheOption = BitmapCacheOption.OnLoad;
  28. memoryStream.Seek(, SeekOrigin.Begin);
  29.  
  30. image.StreamSource = memoryStream;
  31. image.EndInit();
  32. image.Freeze();
  33. memoryStream.Close();
  34. reader.Close();
  35. responseStream.Close();
  36. response.Close();
  37. }
  38. return image;
  39. }
  40.  
  41. public BitmapSource GetImageFtp(string url, int width)
  42. {
  43. var image = new BitmapImage();
  44. if (!string.IsNullOrEmpty(url))
  45. {
  46. FtpWebRequest reqFtp;
  47. reqFtp = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));
  48.  
  49. reqFtp.Method = WebRequestMethods.Ftp.DownloadFile;
  50. reqFtp.UseBinary = true;
  51. FtpWebResponse response = (FtpWebResponse)reqFtp.GetResponse();
  52. Stream ftpStream = response.GetResponseStream();
  53. MemoryStream mStream = new MemoryStream();
  54. ftpStream.CopyTo(mStream);
  55. mStream.Position = ;
  56. int length = (int)mStream.Length;
  57. byte[] returnbyte = new byte[length];
  58. mStream.Read(returnbyte, , length);
  59.  
  60. mStream.Close();
  61. ftpStream.Close();
  62. response.Close();
  63.  
  64. System.IO.MemoryStream stream = new System.IO.MemoryStream(returnbyte);
  65. image.BeginInit();
  66. image.DecodePixelWidth = width;
  67. image.CacheOption = BitmapCacheOption.OnLoad;
  68. stream.Seek(, SeekOrigin.Begin);
  69.  
  70. image.StreamSource = stream;
  71. image.EndInit();
  72. image.Freeze();
  73. stream.Close();
  74. }
  75. return image;
  76.  
  77. }
  78.  
  79. [DllImport("gdi32.dll", SetLastError = true)]
  80. private static extern bool DeleteObject(IntPtr hObject);
  81.  
  82. public BitmapSource ToBitmapSource(System.Drawing.Bitmap bmp)
  83. {
  84. try
  85. {
  86. var ptr = bmp.GetHbitmap();
  87. var source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
  88. ptr, IntPtr.Zero, Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
  89. DeleteObject(ptr);
  90. return source;
  91. }
  92. catch
  93. {
  94. return null;
  95. }
  96. }
  97.  
  98. //获取缩略图
  99. public BitmapSource GetBitImage(string imageLink)
  100. {
  101. //"http://172.17.1.231:8083/3050273262379466760/2017/05/28/09/340800100999/09163448402.jpg?fid=1267520"
  102. if (imageLink.StartsWith("http://"))
  103. {
  104. return GetImageHttp(imageLink,);
  105. }
  106. //ftp格式的
  107. else if (imageLink.StartsWith("ftp://"))
  108. {
  109. return GetImageFtp(imageLink, );
  110. }
  111. }
  112.  
  113. //获取原图
  114. public BitmapSource GetHightBitImage(string imageLink)
  115. {
  116. //"http://172.17.1.231:8083/3050273262379466760/2017/05/28/09/340800100999/09163448402.jpg?fid=1267520"
  117. if (imageLink.StartsWith("http://"))
  118. {
  119. return GetImageHttp(imageLink, );
  120. }
  121. //ftp格式的
  122. else if (imageLink.StartsWith("ftp://"))
  123. {
  124. return GetImageFtp(imageLink, );
  125. }
  126. }
  127.  
  128. }

获取http和ftp地址的图片的更多相关文章

  1. 页面中直接显示FTP中的图片

    页面中直接显示FTP中的图片 FTP根目录下有一张图片,如下 第一步: 通过如下格式,在浏览器上输入路径,确定可看到图片 ftp://root:root@127.0.0.1/111.png ftp:/ ...

  2. Java学习笔记——IO操作之以图片地址下载图片

    以图片地址下载图片 读取给定图片文件的内容,用FileInputStream public static byte[] mReaderPicture(String filePath) { byte[] ...

  3. [Swift通天遁地]五、高级扩展-(5)获取互补色、渐变色、以及图片主题颜色

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  4. 获取本地的IP地址(内网)

    方法一 public static String getLocalIpAddress() { try { for (Enumeration<NetworkInterface> en = N ...

  5. url地址的图片路径

    url地址的图片路径: (./images/1.jpg) 中的./指根路径,有或没有都可以: (../images/1.jpg) 中的../指相对路径: (../../images/1.jpg) 中的 ...

  6. 获取本机IP地址

    这里有两种方法: //获取本机IP - (NSString *)localIPAddress { NSString *localIP = nil; struct ifaddrs *addrs; ) { ...

  7. 关于是用dotnet获取本机IP地址+计算机名的方法

    印象中在maxscript帮助文档里找到过方法,但是当时没记下来.只能通过dotnet实现了. 如果电脑有无线网卡和本地连接,可能会出现乱码,也问了写dotnet的朋友,提供了一些思路,不过最终还是使 ...

  8. 【知识积累】服务器端获取客户端的IP地址(当客户端调用由Axis开发的WebService)

    一.前言 由于项目中一个小的模块需要获取客户端的IP地址以保证安全调用webservice接口,项目中客户端使用C#编写,服务器端使用Java编写,服务器端与客户端采用Axis开发的WebServic ...

  9. 获取设备的mac地址可靠的方法

    参考自:http://www.open-open.com/lib/view/open1433406847322.html /** * 获取设备的mac地址 * * @param ac * @param ...

随机推荐

  1. 【转载】C/C++杂记:虚函数的实现的基本原理

    原文:C/C++杂记:虚函数的实现的基本原理 1. 概述 简单地说,每一个含有虚函数(无论是其本身的,还是继承而来的)的类都至少有一个与之对应的虚函数表,其中存放着该类所有的虚函数对应的函数指针.例: ...

  2. rem布局注意问题和meta标签

    使用rem前的准备: 如果是移动端,添加name="viewport"的meta标签,其中的属性数值根据实际需求而定: <meta name="viewport&q ...

  3. zedboard学习(1)OLED驱动显示图像

    1. 干点啥?驱动一下上面的屏吧 2. 找个代码研究一下,cat命令用于读取文件(普通文件或设备文件)的内容并进行输出.据说板子已经做好OLED的驱动了,驱动映射为/dev/zed_oled,所以直接 ...

  4. Struts 2(八):文件上传

    第一节 基于Struts 2完成文件上传 Struts 2框架中没有提供文件上传,而是通过Common-FileUpload框架或COS框架来实现的,Struts 2在原有上传框架的基础上进行了进一步 ...

  5. Visual Studio设置字体及护眼背景色

    打开vs 菜单栏选择: 工具 -> 选择 -> 环境 -> 字体和颜色,如图所示 字体可以如上选择,背景色选择项背景,点击自定义,如下设置即可.

  6. python-map, reduce, filter, lambda

    目录 lambda表达式 reduce()函数 map()函数 filter()函数 tips:以下使用到的迭代器,可迭代对象,生成器等概念可以参见我的另一篇博客 lambda表达式 主要用于一行写完 ...

  7. SPP-net论文总结

    SPPNet方法来自<Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition> ,是大神 ...

  8. 第1章 Python基础

    一.安装Python windows: 1.下载安装包     https://www.python.org/downloads/ 2.安装     默认安装路径:C:\python27 3.配置环境 ...

  9. 如何让QT程序以管理员权限运行(UAC)

    方案一:(仅适用于使用msvc编译器) 在PRO文件中添加一行指令即可, QMAKE_LFLAGS += /MANIFESTUAC:"level='requireAdministrator' ...

  10. iPhone上的CPU架构,核数以及运行内存

    机型 CPU架构 CPU名 CPU位数 CPU核数 运行内存 iPhone 5 ARMv7s A6 32bit 双核 1G iPhone 5c ARMV7s A6 32bit 双核 1G iPhone ...