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

IT技术 javascript ajax extjs extjs4
2021-02-01 22:57:03

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

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

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

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

data:image/jpeg;base64,+ binary data
4个回答

需要将其转换为 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上查看带有十六进制数据的工作示例

ya.二进制数据以ffd9结尾,忽略00字节
2021-04-02 22:57:03
谢谢@Vlad!我从未在 google.com 上找到这种解决方案,非常感谢!
2021-04-07 22:57:03
Jsfiddle 正是我所需要的
2021-04-07 22:57:03
谢谢你的小提琴!
2021-04-11 22:57:03
我已经删除了 00 字节的结尾,但仍然无法工作,无法显示图像
2021-04-13 22:57:03

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

在 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

在前端 JavaScript/HTML 中,可以将二进制文件加载为图片,无需转换为 base64:

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

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

这是关于显示二进制数据
2021-03-27 22:57:03
问题是当图像不在文件中时显示图像
2021-03-30 22:57:03