如何显示 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">
最后,这就是我所做的(这是上述答案和其他主题的混合
):控制器:
...
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/