有効な.JPEGイメージのバイナリを次に示します。http://Pastebin.ca/raw/23145
このバイナリデータを画像に保存するためにPythonを使用しようとしました。
このデータをextjs 4で表示可能な.JPEG画像に変換するにはどうすればよいですか?
これを試しましたが、うまくいきません。
data:image/jpeg;base64,+ binary data
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進データを使用した作業例を参照してください
データ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: '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
}]
})
}
});