C# 发送HttpWebRequest获得网络图片的大小和尺寸

来源:互联网 发布:在linux中打开文件 编辑:程序博客网 时间:2024/06/16 14:05

可以通过HttpWebRequest的方式发送一个网络图片的请求,再通过HttpWebResponse接收返回的数据,分析数据流得到图片的大小以及尺寸,代码如下:

/// <summary>        /// 获取图片的大小和尺寸        /// </summary>        /// <param name="aPhotoUrl">图片url</param>        /// <param name="aSize">图片大小</param>        /// <param name="aLength">图片尺寸</param>        private void GetPhotoInfo(string aPhotoUrl, ref string aSize, ref string aLength)        {            try            {                Uri mUri = new Uri(aPhotoUrl);                HttpWebRequest mRequest = (HttpWebRequest)WebRequest.Create(mUri);                                mRequest.Method = "GET";                mRequest.Timeout = 200;                mRequest.ContentType = "text/html;charset=utf-8";                                 HttpWebResponse mResponse = (HttpWebResponse)mRequest.GetResponse();                Stream mStream = mResponse.GetResponseStream();                aSize = (mResponse.ContentLength / 1024).ToString() + "KB";                Image mImage = Image.FromStream(mStream);                aLength = mImage.Width.ToString() + "x" + mImage.Height.ToString();                mStream.Close();            }            catch (Exception e)            {                //MessageBox.Show(aPhotoUrl + "获取失败");            }        }
代码解析:

Uri mUri = new Uri(aPhotoUrl);                HttpWebRequest mRequest = (HttpWebRequest)WebRequest.Create(mUri);                                mRequest.Method = "GET";                mRequest.Timeout = 200;                mRequest.ContentType = "text/html;charset=utf-8";                                 HttpWebResponse mResponse = (HttpWebResponse)mRequest.GetResponse();                Stream mStream = mResponse.GetResponseStream();
这一部分是设置请求头的信息,将网络图片的地址aPhotoUrl发送给远程的服务器,并获取服务器返回来的response信息,存储到流mStream中。

 aSize = (mResponse.ContentLength / 1024).ToString() + "KB";                Image mImage = Image.FromStream(mStream);                aLength = mImage.Width.ToString() + "x" + mImage.Height.ToString();
通过mResponse.ContentLength方法获得返回的数据流的字节数,除以1024得到以KB为单位的图片的大小。

通过Image.FromStream方法,将返回到图片的数据流生成一张Image类型的图片mImage,通过调用mImage的Width和Height方法获得图片的宽度和高度。

函数GetPhotoInfo中的参数aSize和aLength是引用类型,用ref表示。