本文实例为大家分享了C#根据http和ftp地址获取对应图片的具体代码,供大家参考,具体内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
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); } } } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。