这种 jpeg 数据是什么?如何将其用作图像标签 src 以在网页中显示它?
What is this kind of jpeg data and how can I use it as an image tag src to display it in a webpage?
我正在 Angular 工作,试图显示我从外部 api 获取的一些图像数据。我已经尝试了一些方法,比如将这些数据转换为 Blob 以显示图像,但我没有任何运气。这是数据的样子:
����JFIF��C\t\t\t\n\n\n\n\n\n\t\n\n\n��+��\t\n���}!1AQa"q2���#B��R��br�\t\n%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz���������������������������������������������������������������������������?��=��[��4�\r�j���U�t{��|���#&@w��Z�����R.��.��\r>�b��;2\��1#��>��KY�d�����#�;��k��Y\r���8e8S��u��JZ4�p���ֺ?�����19�dkr�j\r��ְ��"��.\to\b�ܗ��m��%�3�iI���j…��?�C�&k��d�=�����}҅@���5j�9m�+�����\Lm�9��~��lU#,W'i��Gn�D ��:b�����Lv�'����.ck�c��<�w�$�!U��#��f��_%�8�f]j�(��2��\n�F�suu br?�Mew4��3��r=s�r��cs�#�ޑ�{ˋ���9<qP��|��I�OmZh7Z����泯�)��d�GR~��{}s<g�����+�Z)���'֦�Q�;�_���jr��ӧ!'��[S�/r�X���yI-�ЎO���ז��h�,����=��\n�?��b4{�aP�fx�����?ah�-�e�s�p7q����^c�,I#�����B��}��\��_V�z���"i����ZcS�BT �s���}vK(ZY���>�^��o��zZ�m�a��qU�P��rO=�"�'Y�?���V�i��;��Sǵs����v����sI</�9'=sU�[X)݃��kv��\d7j�
ӡ�v�T���
另一条可能有用的信息是,当我从 Postman 调用 api 时,它会在响应正文中正确显示图像。
感谢任何帮助。
谢谢。
编辑:
目前我正在做的是将此 jpeg 数据转换为缓冲区,从缓冲区创建一个 blob,使用该 blob 创建一个对象 url 并将该对象 url 分配给图像 src。这只是 return 无法加载图像图标。
const buffer = Buffer.from(image.data);
const blob = new Blob(buffer.data, { type: 'image/jpeg' });
const image = URL.createObjectURL(blob);
const imageTag = document.getElementById('fullImage');
(imageTag as HTMLImageElement).src = image;
您的 blob 似乎不是有效的 base64。
在模板中你可以这样做:
<img [src]="myImage">
导入 DomSanitizer,在构造函数中定义它,然后清理要作为图像源传递的 Base64 字符串(使用 trustResourceUrl):
import { DomSanitizer } from '@angular/platform-browser';
constructor(private sanitizer: DomSanitizer) { }
base64string: string; // your blob here
myImage: string; // image string to template
blobToImage() {
this.myImage = this.sanitizer.bypassSecurityTrustResourceUrl('data:image/jpg;base64,'
+ base64string);
}
Angular http 客户端将请求转换为 json,除非您明确告诉它不要这样做。这可能就是为什么您获得的图像数据不是您所期望的。
尝试在获取请求选项中设置 { responseType: 'blob' }
。
感谢 Mike 和 Joosep.P 的意见,我了解到我的图像数据在从我的 api 传回时已损坏。我决定放弃从我的 api 调用外部 api,而是从我的 front-end 调用。一旦我这样做了,转换 blob 数据就很容易了。
this.imagingSerivce.getImage(imageId, response.server, response.token).subscribe((response2: any) => {
const imageTag = document.getElementById('fullImage');
const reader = new FileReader();
reader.readAsDataURL(response2);
reader.onloadend = () => {
(imageTag as HTMLImageElement).src = '' + reader.result;
};
});
我正在 Angular 工作,试图显示我从外部 api 获取的一些图像数据。我已经尝试了一些方法,比如将这些数据转换为 Blob 以显示图像,但我没有任何运气。这是数据的样子:
����JFIF��C\t\t\t\n\n\n\n\n\n\t\n\n\n��+��\t\n���}!1AQa"q2���#B��R��br�\t\n%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz���������������������������������������������������������������������������?��=��[��4�\r�j���U�t{��|���#&@w��Z�����R.��.��\r>�b��;2\��1#��>��KY�d�����#�;��k��Y\r���8e8S��u��JZ4�p���ֺ?�����19�dkr�j\r��ְ��"��.\to\b�ܗ��m��%�3�iI���j…��?�C�&k��d�=�����}҅@���5j�9m�+�����\Lm�9��~��lU#,W'i��Gn�D ��:b�����Lv�'����.ck�c��<�w�$�!U��#��f��_%�
8�f]j�(��2��\n�F�suu br?�Mew4��3��r=s�r��cs�#�ޑ�{ˋ���9<qP��|��I�OmZh7Z����泯�)��d�GR~��{}s<g�����+�Z)���'֦�Q�;�_���jr��ӧ!'��[S�/r�X���yI-�ЎO���ז��h�,����=��\n�?��b4{�aP�fx�����?ah�-�e�s�p7q����^c�,I#�����B��}��\��_V�z���"i����ZcS�BT �s���}vK(ZY���>�^��o��zZ�m�a��qU�P��rO=�"�'Y�?���V�i��;��Sǵs����v����sI</�9'=sU�[X)݃��kv��\d7j�
ӡ�v�T���
另一条可能有用的信息是,当我从 Postman 调用 api 时,它会在响应正文中正确显示图像。
感谢任何帮助。
谢谢。
编辑: 目前我正在做的是将此 jpeg 数据转换为缓冲区,从缓冲区创建一个 blob,使用该 blob 创建一个对象 url 并将该对象 url 分配给图像 src。这只是 return 无法加载图像图标。
const buffer = Buffer.from(image.data);
const blob = new Blob(buffer.data, { type: 'image/jpeg' });
const image = URL.createObjectURL(blob);
const imageTag = document.getElementById('fullImage');
(imageTag as HTMLImageElement).src = image;
您的 blob 似乎不是有效的 base64。
在模板中你可以这样做:
<img [src]="myImage">
导入 DomSanitizer,在构造函数中定义它,然后清理要作为图像源传递的 Base64 字符串(使用 trustResourceUrl):
import { DomSanitizer } from '@angular/platform-browser';
constructor(private sanitizer: DomSanitizer) { }
base64string: string; // your blob here
myImage: string; // image string to template
blobToImage() {
this.myImage = this.sanitizer.bypassSecurityTrustResourceUrl('data:image/jpg;base64,'
+ base64string);
}
Angular http 客户端将请求转换为 json,除非您明确告诉它不要这样做。这可能就是为什么您获得的图像数据不是您所期望的。
尝试在获取请求选项中设置 { responseType: 'blob' }
。
感谢 Mike 和 Joosep.P 的意见,我了解到我的图像数据在从我的 api 传回时已损坏。我决定放弃从我的 api 调用外部 api,而是从我的 front-end 调用。一旦我这样做了,转换 blob 数据就很容易了。
this.imagingSerivce.getImage(imageId, response.server, response.token).subscribe((response2: any) => {
const imageTag = document.getElementById('fullImage');
const reader = new FileReader();
reader.readAsDataURL(response2);
reader.onloadend = () => {
(imageTag as HTMLImageElement).src = '' + reader.result;
};
});