Angular - 将字节数组显示为图像

Aym*_*ari 9 typescript angular

我有一个返回字节 [] 的 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}}"/>
Run Code Online (Sandbox Code Playgroud)

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

?PNG ?Ou???j?000000000H??a ??a````````??a??a ??a```````??a??a ??a````````??a??a ??a```````??a??a````````?.r? ?? ??X??V??QS??\?????F?`?{lhXnJU??s??ii??O1?;??????

Hie*_*yen 12

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

进口import { DomSanitizer } from '@angular/platform-browser';

添加DomSanitizerconstructor(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);
});
Run Code Online (Sandbox Code Playgroud)

在 HTML 中

<img [src]='image' />
Run Code Online (Sandbox Code Playgroud)


Pie*_*Duc 7

您需要将图像数据转换为 dataURL:

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

在您的组件中:

<img [src]="image"/>
Run Code Online (Sandbox Code Playgroud)

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