36

这是有效 .JPEG 图像的二进制文件。
http://pastebin.ca/raw/2314500

我曾尝试使用 Python 将此二进制数据保存到图像中。

如何使用 extjs 4 将此数据转换为可查看的 .JPEG 图像?

我试过这个,但它不起作用。

data:image/jpeg;base64,+ binary data
4

4 回答 4

70

需要将其转换为base64。

JS 有 btoa() 函数。

例如:

var img = document.createElement('img');
img.src = 'data:image/jpeg;base64,' + btoa('your-binary-data');
document.body.appendChild(img);

但我认为您在 pastebin 中的二进制数据是无效的 - jpeg 数据必须以“ffd9”结尾。

更新:

需要编写简单的十六进制到base64转换器:

function hexToBase64(str) {
    return btoa(String.fromCharCode.apply(null, str.replace(/\r|\n/g, "").replace(/([\da-fA-F]{2}) ?/g, "0x$1 ").replace(/ +$/, "").split(" ")));
}

并使用它:

img.src = 'data:image/jpeg;base64,' + hexToBase64('your-binary-data');

在jsfiddle上查看使用十六进制数据的工作示例

于 2013-02-17T05:52:37.130 回答
3

数据 URI 格式为:

data:<headers>;<encoding>,<data>

因此,您只需要将数据附加到“data:image/jpeg;”字符串:

var your_binary_data = document.body.innerText.replace(/(..)/gim,'%$1'); // parse text data to URI format

window.open('data:image/jpeg;,'+your_binary_data);
于 2014-12-01T13:49:40.203 回答
1

在 ExtJs 中,您可以使用

xtype:'图像'

渲染图像。

这是一个显示使用 extjs 呈现二进制数据的小提琴。

atob --> 将 ascii 转换为二进制

btoa --> 将二进制转换为 ascii

Ext.application({
    name: 'Fiddle',

    launch: function () {
        var srcBase64 = "data:image/jpeg;base64," + btoa(atob("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8H8hYDwAFegHS8+X7mgAAAABJRU5ErkJggg=="));

        Ext.create("Ext.panel.Panel", {
            title: "Test",
            renderTo: Ext.getBody(),
            height: 400,
            items: [{
                xtype: 'image',
                width: 100,
                height: 100,
                src: srcBase64
            }]
        })
    }
});

https://fiddle.sencha.com/#view/editor&fiddle/28h0

于 2017-10-18T04:47:04.467 回答
-3

在前端 JavaScript/HTML 中,您可以将二进制文件加载为图像,而不必转换为 base64:

<img src="http://engci.nabisco.com/artifactory/repo/folder/my-image">

my-image 是一个二进制图像文件。这将加载就好了。

于 2017-07-19T18:32:22.123 回答