C#-下载img并将字节转换为位图仅适用于Fiddler打开
本文关键字:位图 适用于 Fiddler 打开 转换 img 下载 字节 C#- | 更新日期: 2023-09-27 18:22:44
我使用HttpWebRequest通过SSL连接到一个站点,下载一个图像,然后将字节转换为位图,我可以将其加载到图片框中。
如果Fiddler是打开的,一切都很好,但如果它是关闭的,我会得到错误参数无效将MemoryStream传递给位图构造函数时。
你知道发生了什么事吗?我想这是菲德勒的证书在做什么,但为什么菲德勒跑步会起作用呢?我从另一个位置尝试了这个应用程序(没有安装Fiddler),结果出现了与上面相同的错误。
public static Bitmap ByteToImage(byte[] bytes)
{
MemoryStream mStream = new MemoryStream();
byte[] data = bytes;
mStream.Write(data, 0, Convert.ToInt32(data.Length));
Bitmap bm = new Bitmap(mStream, false); //**Problem line**
mStream.Dispose();
return bm;
}
public static byte[] GetImageBytes()
{
// CODE FOR HttpWebRequest HERE
byte[] response;
using (HttpWebResponse resp = (HttpWebResponse)request.GetResponse())
response = Parser.ResponseAsBytes(resp);
return response;
}
public static byte[] ResponseAsBytes(HttpWebResponse response)
{
try
{
Stream stream;
if (response == null || (stream = response.GetResponseStream()) == null || response.StatusCode != HttpStatusCode.OK) return null;
byte[] bytes;
using (stream)
{
bytes = new byte[5000];
while ((stream.Read(bytes, 0, bytes.Length)) > 0) { }
return bytes;
}
}
catch { return null; }
}
您可以这样尝试:
System.Net.WebRequest request = System.Net.WebRequest.Create(YourURLString);
System.Net.WebResponse resp = request.GetResponse();
System.IO.Stream respStream = resp.GetResponseStream();
Bitmap bmp = new Bitmap(respStream);
respStream.Dispose();
picturebox1.Image = bmp;