Comment afficher les données binaires sous forme d'image-extjs 4

Voici le binaire pour un valide .Image JPEG.
http://pastebin.ca/raw/2314500

J'ai essayé D'utiliser Python pour enregistrer ces données binaires dans une image.

Comment puis-je convertir ces données en un visible .Image JPEG avec extjs 4?

J'ai essayé ça, mais ça ne marche pas.

data:image/jpeg;base64,+ binary data
22
demandé sur goldie 2013-02-17 01:01:30

4 réponses

Besoin de le convertir en base64.

JS ont la fonction btoa () pour cela.

Par exemple:

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

Mais je pense que vos données binaires dans pastebin sont invalides - les données jpeg doivent être terminées sur 'ffd9'.

Mise à Jour:

Besoin d'écrire un convertisseur hexadécimal simple en 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(" ")));
}

Et l'utiliser:

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

Voir exemple de travail avec votre hex de données sur jsfiddle

48
répondu Vlad 2013-02-17 08:21:00

Le format URI de données est:

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

Donc, il vous suffit d'ajouter vos données à la chaîne" 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
répondu iegik 2014-12-01 13:57:48

Dans ExtJs, vous pouvez utiliser

Xtype: 'image'

Pour rendre une image.

Voici un violon montrant le rendu des données binaires avec extjs.

Atob -- > convertit ascii en binaire

Btoa -- > convertit le binaire en 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

0
répondu Saurabh Nemade 2017-10-18 04:47:04

En JavaScript/HTML frontal, vous pouvez charger un fichier binaire en tant qu'image, vous n'avez pas besoin de le convertir en base64:

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

My-image est un fichier image binaire. Cela va charger très bien.

-1
répondu Alexander Mills 2017-07-19 18:32:22