如何将二进制数据显示为图像 - extjs 4

时间:2013-02-16 21:01:30

标签: javascript ajax extjs extjs4

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

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

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

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

data:image/jpeg;base64,+ binary data

4 个答案:

答案 0 :(得分:54)

需要在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

上的十六进制数据的工作示例

答案 1 :(得分:1)

数据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);

答案 2 :(得分:0)

在ExtJs中,您可以使用

  

xtype:'image'

渲染图像。

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

atob - &gt;将ascii转换为二进制

btoa - &gt;将二进制转换为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

答案 3 :(得分:-3)

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

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

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