如何显示 WS 返回的图像

本文关键字:WS 返回 图像 显示 何显示 | 更新日期: 2023-09-27 18:33:51

我请求一个返回图像的WS。

 HttpWebResponse response = (HttpWebResponse)request.GetResponse();

我可以看到在HttpWebResponse中内容类型是image/jpeg。我想在我的视图中显示此图像,但我不知道如何显示。我不想将此图像写入硬盘上的具体文件中。
我必须从 HttpWebResponse 中提取什么,我是否必须将其转换为 byte[]、文件中或左右?
我如何在我的视图中显示<img>,我应该为 src 放什么,因为该文件实际上并不存在?

<img src="???" />

编辑:这是我到目前为止所做的:

在控制器中:

 ...
byte[] responseByte = null;
 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
 Stream dataStream = response.GetResponseStream();
 long streamLength = GetStreamLength(dataStream);
 responseByte = new byte[streamLength];
 dataStream.Read(responseByte, 0, (int)streamLength);
 productDTO.thumbnail = responseByte;

在观点中:

 @{
      var base64 = Convert.ToBase64String(@item.thumbnail);
      var imgSrc = String.Format("data:image/jpeg;base64,{0}", base64);
  }
  <img src="@imgSrc" />

但是我得到一个断开的图像链接,@imgSrc只包含

<img src="data:image/jpeg;base64,AAAAAA.....AAAAAAAAAAA">

如何显示 WS 返回的图像

最后,这就是我所做的(这是上述答案和其他主题的混合

):

控制器:

...
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
wsResponseAsImg = Image.FromStream(response.GetResponseStream());
byte[] imgBytes = turnImageToByteArray(wsResponseAsImg);
string imgString = Convert.ToBase64String(imgBytes);
string responseImgToBase64 = String.Format("data:image/jpeg;base64," + imgString);
 productDTO.thumbnail = responseImgToBase64;
 ...
 }

    private byte[] turnImageToByteArray(System.Drawing.Image img)
    {
        MemoryStream ms = new MemoryStream();
        img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
        return ms.ToArray();
    }

视图:

...
<img src="@item.thumbnail" />
...

感谢您对:)的帮助

您可以在 src 中使用 base64 格式的图像。

它看起来像这样:

    <img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
    9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />

您可以在此处看到此操作:

http://jsfiddle.net/hpP45/1763/