获取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

 

posted @ 2017-06-29 13:57  幻影星辰  阅读(2581)  评论(0编辑  收藏  举报