图片地址为 https://pic3.iranshao.com/photo/image/640-12307131c7766aba309972e8db7e4835.jpg
运行到 Image downImage = Image.FromStream(imgRequest.GetResponse().GetResponseStream());就报错参数无效,查不到原因我是醉了 请教大佬
public void ImgSave(string url, string wzname, string tpname)
{
WebRequest imgRequest = WebRequest.Create(url);
HttpWebResponse res;
try
{
res = (HttpWebResponse)imgRequest.GetResponse();
}
catch (WebException ex)
{
res = (HttpWebResponse)ex.Response;
}
if (res.StatusCode.ToString() == "OK")
{
string deerory = string.Format(@"D:\{0}\", wzname);
string fileName = string.Format("{0}.png", wzname + tpname);
if (!System.IO.Directory.Exists(deerory))
{
System.IO.Directory.CreateDirectory(deerory);
}
Image downImage = Image.FromStream(imgRequest.GetResponse().GetResponseStream());
downImage.Save(deerory + fileName);
Logs.WriteLog(tpname);
downImage.Dispose();
}
}
}
我觉得问题出在图片上,我加了一段代码
Stream s= res.GetResponseStream();
byte[] bytes;
using (var ms = new MemoryStream())
{
s.CopyTo(ms);
bytes = ms.ToArray();
}
string base64 = Convert.ToBase64String(bytes);
s.Close();
得到的文件base64为UklGRiIAAAB开头,是webp格式,不是jpg格式,jpg格式base64是/9j/开头的,应该是直接改了文件后缀成为jpg文件。
Image.FromStreamImage 类不支持位图中的 Alpha 透明。 若要启用 Alpha 透明,需要使用每像素 32 位的 PNG 图像。
webp格式支持透明度,我看了一下这个图,也是32位的,大概有透明度的。
可以使用这个图片测试 http://www.baidu.com/img/baidu_logo.gif
根据楼主的写法出现了一个请求被终止的问题