web-dev-qa-db-ja.com

バイナリデータを画像として表示する方法-extjs 4

有効な.JPEGイメージのバイナリを次に示します。
http://Pastebin.ca/raw/23145

このバイナリデータを画像に保存するためにPythonを使用しようとしました。

このデータをextjs 4で表示可能な.JPEG画像に変換するにはどうすればよいですか?

これを試しましたが、うまくいきません。

data:image/jpeg;base64,+ binary data
28
user2040602

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コンバーターへの単純な16進数を記述する必要があります。

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 の16進データを使用した作業例を参照してください

57
Vlad

データ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);
1
iegik

ExtJsでは、次を使用できます

xtype: 'image'

画像をレンダリングします。

以下は、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/28h

0
Saurabh Nemade