【问题标题】:How to display image returned by WS?如何显示WS返回的图像?
【发布时间】:2016-02-16 17:00:37
【问题描述】:

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

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

我可以看到 HttpWebResponse 中的 contentType 是 image/jpeg。 我想在我的视图中显示此图像,但我不知道如何。我不想将此图像写入 HDD 上的具体文件中。
我必须从 HttpWebResponse 中提取什么,是否必须将其转换为字节 []、文件或其他?
以及如何在我的视图中显示<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">

【问题讨论】:

标签: c# asp.net-mvc-4


【解决方案1】:

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

控制器:

...
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" />
...

感谢您的帮助:)

【讨论】:

    【解决方案2】:

    你可以在src中使用base64格式的图片。

    看起来像这样:

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

    你可以在这里看到这个工作:

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

    【讨论】:

    • 我试过了,看看我上面的编辑,有些东西不工作:/
    猜你喜欢
    • 2018-04-17
    • 2020-01-19
    • 2015-06-02
    • 2020-05-10
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 2023-04-05
    • 2013-09-14
    相关资源
    最近更新 更多