【问题标题】:Angular - Display byte array as imageAngular - 将字节数组显示为图像
【发布时间】:2019-09-21 21:18:59
【问题描述】:

我有一个返回 byte[] 的 api,我想在我的前端应用程序中将其显示为图像,所以我使用数据 url 来显示图像

this.cardBackgroundService.getImage(event.data.entitlementCertificateNumber, "C003").subscribe(data => {
  this.image = data;
  console.log(this.image);
});

<img src="data:image/png;base64,{{image}}"/>

问题是当我在控制台中显示 api 的响应时,它具有这种格式并且不显示为图像

�PNG �欧���j�000000000H��a��a````````��a��a��a```````��a��a��a````````��a��a��a```````��a��a``````````.r� ����X��V��QS��\����F�`�{lhXnJU��s��iiǯ�O1�;������

【问题讨论】:

  • 试试this.image = btoa(data);
  • 我有这个错误:Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.
  • 否则这个“可能”工作:&lt;img src="data:image/png,{{image}}"/&gt;,所以只需删除 base64
  • 参考这个链接:- stackoverflow.com/questions/36152917/…>

标签: angular typescript


【解决方案1】:

你可以这样显示,它对我有用。

导入import { DomSanitizer } from '@angular/platform-browser';

DomSanitizer 添加到constructor(private sanitizer: DomSanitizer) { }

this.cardBackgroundService.getImage(event.data.entitlementCertificateNumber, "C003")
.subscribe(data => {

  let objectURL = 'data:image/png;base64,' + data;
  this.image = this.sanitizer.bypassSecurityTrustUrl(objectURL);
});

在 HTML 中

<img [src]='image' />

【讨论】:

  • 我有这个错误:data:image/png;base64,%EF%BF%BDPNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%034%00%00%01%EF%BF%BD%08%02%00%00%00r@%EF%BF%BD%EF%BF%BD%00%00%EF%BF%BD%00IDATx%EF%BF%BD%EF%BF%BD%05XU%EF%BF%BD%EF%BF%BD%EF%BF%BD%EF%BF%BD?%EF%BF%BDw%EF%BF%BD%1B%EF%BF%BD%EF%BF%BDw%EF%BF%BDV@%11%0B%0B%EF%BF%BD.% net::ERR_INVALID_URL
  • 你需要检查你的图片内容,你可以在stackblitz.com/edit/display-image-from-api看到demo
【解决方案2】:

你需要将你的图片数据转换成dataURL:

const reader = new FileReader();
reader.onload = (e) => this.image = e.target.result;
reader.readAsDataURL(new Blob([data]));

在你的组件中:

<img [src]="image"/>

确保在getImage() http get 请求中将responseType 设置为'blob' 类型。

【讨论】:

  • 那么我应该在我的 Spring Boot 图像字段中设置来自 AWS 的哪种类型的图像?字节[]?我想用一些字段和图像字段从后端发送到前端 ResponseObject...
猜你喜欢
  • 1970-01-01
  • 2013-05-18
  • 2012-03-16
  • 2012-08-04
  • 1970-01-01
  • 1970-01-01
  • 2021-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多