6

我试图为这一切寻找答案。看起来很简单,但是我对 Javascript 的了解(一直在用 Java 编码)加上 Javascript 端的图像流转换使得这很难。

我创建了一个 REST 请求 url -https://<<host>:port/getPicture它会产生一个image/jpeg流式响应。

一旦我在 Chrome 浏览器中触发 URL - 图像就会正确呈现。它也在我的 angularJS 应用程序中呈现 - 通过 ng-src 标签,例如<img ng-src="url"/>

但是,当我尝试将原始数据设置为 ng-src 标签时,它似乎不起作用。在进一步阅读中,我了解到 ng-src 不接受原始图像数据,但需要将其转换为 base64String 才能用作 DataURI。我试图到处查找文章以将原始图像数据(JFIF 格式)转换为 DataURI,但没有成功。

下面显示的是响应原始数据的外观(我在浏览器中打开它,它呈现完美)。

问题 - 1. 原始数据是什么格式?二进制流还是字节数组?或者它是什么?2. 如何将其转换为 Javascript 中的 DataURI,以便它可以链接到我的 ng-src 标签?

请求你帮我解决这个问题。看起来很容易,但现在花了我一个星期的时间,让我发疯了!!

����JFIF``��C       

 $.' ",#(7),01444'9=82<.342��C          

2!!22222222222222222222222222222222222222222222222222���|"��    
���}!1AQa"q2���#B��R��$3br� 
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz���������������������������������������������������������������������������    
���w!1AQaq"2�B����  #3R�br�
$4�%�&amp;'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������?�4���)����4�㊎D,>W�}jLsIބ�Y~{鑻a��6�ҙb�'��I�Fj�+��K�R
�dhr=���4�������+R~S���Zq�&gt;�g �5Vղ_��[�y��(,�����Ґ2�$?Z@(��K��I�|Ro��G#қ��K�Ґ��pM7|7w��I���Q@��)��J��jIeo��?�篵Z�����9��8�a����[W%�r��F2E4Es�e��/������]��i�92�Pf���݃yo��O��n���9f�]�;W�=zRt��綃ނ*}Z{ׂ�P!�̤�YEt�s�!���s���zR�EQdP�]\��b�@̫����Q������d��k��t�&amp;�Nk�L��@f�&amp;�&gt;Ê�u�����������`���-�s�/    ���ʪF�p)�f�c�(aLd?p�I�I��7Rr=h��i����2=�2�4���P��'�3擨*����%ߖ�*]��`Q�ڌ�&G�+��5䈹E��Mu2F����E���jϔp�����_�qp����^�V������^�ː���̬b�'l�E/��'漛��
4

3 回答 3

4
  1. 编码应该是 base64,您可以在服务器或客户端上执行此操作。
  2. 原始数据应设置如下 -

<img ng-src="data:image/*;base64,{{Raw Binary Data}}"/>

于 2013-08-24T07:54:19.660 回答
1

请看这个:https ://stackoverflow.com/a/60474472/10245760

这解决了我从 ����JFIF�������</p> 开始的响应问题

于 2020-05-06T04:18:34.910 回答
0

我遇到了同样的问题。尝试

    xhr.open("GET", path, true);
    xhr.setRequestHeader("Content-Type", "image/jpeg");
    xhr.responseType = "arraybuffer";
    xhr.addEventListener("readystatechange", function() {
        if (this.readyState === 4) {
            var resp = this.response;
            var byteArray = new Uint8Array(resp);
            var str = String.fromCharCode.apply(null, byteArray);
            var src = "data:image/jpeg;base64," + btoa(str);
            var img = document.createElement("img");
            img.src = src;
    });
    xhr.send(null);

像这样的东西。

于 2019-07-31T14:33:30.660 回答