首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从http get请求中显示PNG

从http get请求中显示PNG
EN

Stack Overflow用户
提问于 2017-10-29 14:24:45
回答 1查看 14.1K关注 0票数 6

我使用的是角4,我使用的是一个api,它返回具有内容类型的图像: img/png

http方法:

代码语言:javascript
复制
return this.http.get('URL', this.options)
    .map((res: Response) => res.text());
// can be also : res.arrayBuffer() // res.blob()

http get响应(在文本和ARC中)如下所示:

代码语言:javascript
复制
�PNG  IHDR��"͹�W�W��zؽ�|+q%�   ��Y������M缥{��U��H�ݏ)L�L�~�6/'6Q׌�}���:��l'���� �R�L�&�~Lw?�

我尝试了不同的方法来转换和显示它:

  • blob的形式获取响应,并使用以下方法将其转换: 新Uint8Array(响应)
  • 获取图像为arrayBuffer,然后使用以下方法将其转换: ArrayBufferToBase64(缓冲区){ let二进制= '';设字节=新Uint8Array(缓冲区);让len = bytes.byteLength;for (设i= 0;i< len;i++) {二进制+= String.fromCharCode(bytesi);}返回window.btoa(二进制)};

他们俩都没有为我工作,图像也没有显示出来。

我的问题是,响应的真正格式(blob、数组缓冲区或文本)是什么,以及如何显示它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-29 14:41:04

您可以使用fetch API实现这一点。

让我们首先以blob的形式返回响应。然后可以使用URL.createObjectURL()创建一个文件对象。

代码语言:javascript
复制
fetch(URL)
  .then(res=>{return res.blob()})
  .then(blob=>{
    var img = URL.createObjectURL(blob);
    // Do whatever with the img
    document.getElementById('img').setAttribute('src', img);
  })

演示

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47001306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档