• 获取http和ftp地址的图片


    根据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);
                }
            }
    
        }
    View Code
  • 相关阅读:
    Max关闭WPF
    InstallShield安装过程介绍
    InstallShield相关资料整理
    .net reflection的一点研究
    (转)VMware增加磁盘容量方法
    领域驱动设计《读书笔记》
    《领域驱动设计C#2008实现》读书笔记
    深入研究c++对象模型
    <转载>com之包容聚合
    基于插件开发的架构研究
  • 原文地址:https://www.cnblogs.com/sxw117886/p/7094105.html
Copyright © 2020-2023  润新知