在图片框 c# 中将来自 HTTP 请求的响应转换为 PNG

Convert Response from HTTP request to PNG in a picturebox c#

我使用

向 Web 服务器发出请求
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
string result = string.Empty;
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
    result = reader.ReadToEnd();
}

并在 "result" 中返回以下格式 我如何将其更改为我可以在图片框中显示的 PNG?

aPic = "�PNG\r\n\u001a\n[=11=][=11=][=11=]\rIHDR[=11=][=11=][=11=][=11=][=11=][=11=]\b\u0006[=11=][=11=][=11=]W\u0002��[=11=][=11=][=11=]\u001dtEXtjira-system-image-type[=11=]avatar�\u0002\u001aa[=11=][=11=]\u0010�IDATx��Y�W�Y�����>s�Lw�S3�5eL[=11=]\u0001�EY\u0015YeM\u0002a\rdO\bd\u000f!\u0010�}S\u0016\u00196q-\u0005�\u0005\u0010\u0005�...

我正在使用 .Net 4.0,这是一个 winforms 应用程序。

非常感谢。

将数据下载为字节数组并将其转换为图像并将其放入图片框:

using (var webClient = new WebClient())
{
  using (var stream = webClient.OpenRead("http://1.2.3.4/image.png"))
  {
    pictureBox1.Image = new Bitmap(stream);
  }
}

PNG 是一种以 PNG 压缩格式保存的位图图像,因此您需要查看位图而不是 PNG,如果您查看位图 class 那么您会发现它有一个构造函数接受流(参见 MSDN

这就是一个很好的例子

private void InitializeStreamBitmap()
{
    try
    {
        System.Net.WebRequest request = 
            System.Net.WebRequest.Create(
            "http://www.microsoft.com//h/en-us/r/ms_masthead_ltr.gif");
        System.Net.WebResponse response = request.GetResponse();
        System.IO.Stream responseStream = 
            response.GetResponseStream();
        Bitmap bitmap2 = new Bitmap(responseStream);
        PictureBox1.Image = bitmap2;

    }
    catch(System.Net.WebException)
    {
        MessageBox.Show("There was an error opening the image file."
           + "Check the URL");
    }
}