C#根据http和ftp图片地址获取对应图片
本文实例为大家分享了C#根据http和ftp地址获取对应图片的具体代码,供大家参考,具体内容如下
publicclassGetBitmapImageClass
{
publicBitmapSourceGetImageHttp(stringurl,intwidth)
{
varimage=newBitmapImage();
intBytesToRead=100;
if(!string.IsNullOrEmpty(url))
{
WebRequestrequest=WebRequest.Create(newUri(url,UriKind.Absolute));
request.Timeout=-1;
WebResponseresponse=request.GetResponse();
StreamresponseStream=response.GetResponseStream();
BinaryReaderreader=newBinaryReader(responseStream);
MemoryStreammemoryStream=newMemoryStream();
byte[]bytebuffer=newbyte[BytesToRead];
intbytesRead=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();
}
returnimage;
}
publicBitmapSourceGetImageFtp(stringurl,intwidth)
{
varimage=newBitmapImage();
if(!string.IsNullOrEmpty(url))
{
FtpWebRequestreqFtp;
reqFtp=(FtpWebRequest)FtpWebRequest.Create(newUri(url));
reqFtp.Method=WebRequestMethods.Ftp.DownloadFile;
reqFtp.UseBinary=true;
FtpWebResponseresponse=(FtpWebResponse)reqFtp.GetResponse();
StreamftpStream=response.GetResponseStream();
MemoryStreammStream=newMemoryStream();
ftpStream.CopyTo(mStream);
mStream.Position=0;
intlength=(int)mStream.Length;
byte[]returnbyte=newbyte[length];
mStream.Read(returnbyte,0,length);
mStream.Close();
ftpStream.Close();
response.Close();
System.IO.MemoryStreamstream=newSystem.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();
}
returnimage;
}
[DllImport("gdi32.dll",SetLastError=true)]
privatestaticexternboolDeleteObject(IntPtrhObject);
publicBitmapSourceToBitmapSource(System.Drawing.Bitmapbmp)
{
try
{
varptr=bmp.GetHbitmap();
varsource=System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
ptr,IntPtr.Zero,Int32Rect.Empty,System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
DeleteObject(ptr);
returnsource;
}
catch
{
returnnull;
}
}
//获取缩略图
publicBitmapSourceGetBitImage(stringimageLink)
{
//"http://172.17.1.231:8083/3050273262379466760/2017/05/28/09/340800100999/09163448402.jpg?fid=1267520"
if(imageLink.StartsWith("http://"))
{
returnGetImageHttp(imageLink,200);
}
//ftp格式的
elseif(imageLink.StartsWith("ftp://"))
{
returnGetImageFtp(imageLink,200);
}
}
//获取原图
publicBitmapSourceGetHightBitImage(stringimageLink)
{
//"http://172.17.1.231:8083/3050273262379466760/2017/05/28/09/340800100999/09163448402.jpg?fid=1267520"
if(imageLink.StartsWith("http://"))
{
returnGetImageHttp(imageLink,0);
}
//ftp格式的
elseif(imageLink.StartsWith("ftp://"))
{
returnGetImageFtp(imageLink,0);
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。