How to display binary data as image - extjs 4 How to display binary data as image - extjs 4 javascript javascript

How to display binary data as image - extjs 4


Need to convert it in base64.

JS have btoa() function for it.

For example:

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

But i think what your binary data in pastebin is invalid - the jpeg data must be ended on 'ffd9'.

Update:

Need to write simple hex to base64 converter:

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

And use it:

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

See working example with your hex data on jsfiddle


The data URI format is:

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

So, you need only append your data to the "data:image/jpeg;," string:

var your_binary_data = document.body.innerText.replace(/(..)/gim,'%$1'); // parse text data to URI formatwindow.open('data:image/jpeg;,'+your_binary_data);


In ExtJs, you can use

xtype: 'image'

to render a image.

Here is a fiddle showing rendering of binary data with extjs.

atob -- > converts ascii to binary

btoa -- > converts binary to 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