当前位置: 代码迷 >> ASP.NET >> 读取网络上的图片转成Image有关问题
  详细解决方案

读取网络上的图片转成Image有关问题

热度:9649   发布时间:2013-02-25 00:00:00.0
读取网络上的图片转成Image问题
C# code
Stream stream = null;        StreamReader reader = null;        MemoryStream ms = null;        HttpWebResponse webResponse = null;        try        {            WebRequest webRequest = HttpWebRequest.Create("http://image.sjq.cn/img/201002/99913/1213.jpg");   //打开图片地址            webResponse = (HttpWebResponse)webRequest.GetResponse();            stream = webResponse.GetResponseStream();            reader = new StreamReader(stream);            string textContent = reader.ReadToEnd();            byte[] bytes = System.Text.Encoding.Default.GetBytes(textContent);            ms = new MemoryStream(bytes);            System.Drawing.Image img = System.Drawing.Image.FromStream(ms);             [color=#FF0000] ms参数无效[/color]            //记录是否是图片个格式            bool imgState = false;            if (img.RawFormat == ImageFormat.Gif)                imgState = true;            if (img.RawFormat == ImageFormat.Jpeg)                imgState = true;            if (img.RawFormat == ImageFormat.Png)                imgState = true;            if (imgState)            {                imgHeight = img.Height;                imgWidth = img.Width;                imgSize = int.Parse(img.Size.ToString());                md5 = getMd5Hash(textContent);                if (ImagesManager.GetImgMarkIsExits(md5))                {                    message = "该图片已经存在!";                    return false;                }                return true;            }            else            {                message = "该URL地址的目标不是图片";                return false;            }        }        catch (Exception ex)        {            message = ex.Message;            message = "图片上传操作异常";            return false;        }        finally        {            webResponse.Close();            stream.Dispose();            stream.Close();            reader.Dispose();            reader.Close();            ms.Dispose();            ms.Close();        }

byte[] bytes = System.Text.Encoding.Default.GetBytes(textContent);
  ms = new MemoryStream(bytes);
  System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
报错:ms参数无效。
不知道什么原因
我之前用FileUpload上传的图片也是用这段代码就没问题。


------解决方案--------------------------------------------------------
废话啊 

你获取过来的就是字节数组 干嘛要转换为文字?
  
stream = webResponse.GetResponseStream();
 MemoryStream ms = new MemoryStream(stream );
System.Drawing.Image img = System.Drawing.Image.FromStream(ms);

------解决方案--------------------------------------------------------
新建的web技术交流群,欢迎大家加入一起讨论:
群号:29037453
------解决方案--------------------------------------------------------
探讨
文字我是用来MD5加密的,以免以后在网络上下载相同的图片。

------解决方案--------------------------------------------------------
stream = webResponse.GetResponseStream();
reader = new StreamReader(stream);
[color=#FF0000] string textContent = reader.ReadToEnd();[/color
这里数据就错误了。 你不能把byte[]直接转换为字符串
直接修改成

byte[] bytes = new System.Net.WebClient().DownloadData(“http://image.sjq.cn/img/201002/99913/1213.jpg”);
------解决方案--------------------------------------------------------
up回复内容太短了!
  相关解决方案