2014-09-17 4 views
1

J'ai essayé de la base encode mon image pour montrer via CSS comme:l'image Encode base64

background-image: url(data:image/png;base64,%codeForImage%) 

donc j'ai essayé ce que je trouve ici:

https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding

Mais il ne sera pas . me montrer une image (en utilisant l'image de png 'PhoneGap android drawable

Deux questions:

Comment puis-je résoudre cela ou comment puis-je montrer une image sans base64 auparavant.

Exemple: Est-il possible de saisir les octets d'une image et montrer par

background-image:url(data:%uncodedImageBytes%) 

Contexte: Je reçois les octets d'une image à partir d'un plugin PhoneGap et je suis en train de montrer l'image à l'utilisateur.

Répondre

0

Le premier morceau de code est correct:

background-image: url(data:image/png;base64,%codeForImage%) 

Insertion des données binaires ne fonctionneront pas. Si vous voyez une image différente de celle que vous attendez, alors vos sélecteurs CSS ne correspondent pas à l'élément (par exemple si l'élément est <div id="foobar"> et votre sélecteur est div.foobar), ou votre sélecteur est not specific enough.

Dans les deux cas, inspectez l'élément avec quelque chose comme Firebug et vérifiez quelles règles CSS ont été appliquées à l'élément, et si vous pouvez voir celui qui est en haut.

+0

Il semble que je ne peux pas encoder en base64 les binaires d'image correcte. Je suis sûr que j'ai le div correct (Réglage de l'arrière-plan: vert fonctionne :)) – Dinkheller

+0

Quel outil utilisez-vous pour encoder en base64 vos images? Si 'background: green' fonctionne, il se peut que' background-image' soit ajouté en haut.Essayez de définir une image de fond avec une URL sur une image externe pour voir si une image peut être appliquée. – lxg

+0

Pour des raisons de test, je n'ai utilisé aucune addition divs. Donc, il n'y a rien ci-dessus. Et en ajoutant un fichier pour l'image cela fonctionne. – Dinkheller

0

Je recommanderais contre Base 64 pour les applications mobiles en général.

Why? Check here.

Si vous souhaitez utiliser base64 malgré l'augmentation de la performance, je recommande d'utiliser un site comme this one afin de faire l'encodage base64. Sinon, votre chaîne d'URL semble appropriée, mais binaire n'est pas le format attendu. Assez drôle, il attend Base64 - qui est quelque chose de complètement différent.

Modifier

Si vous devez le faire lors de l'exécution et uniquement avec les binaires, faites-le en JavaScript. Il a une fonction cuite dans lequel va gérer l'encodage Base64 à partir de binaires suspendus à partir de l'objet Window.

Here's the documentation

utiliser comme ceci:

var bSixtyFourString = window.btoa(%MY_BINARY%); 
+0

Merci, je n'ai pas demandé de vitesse, mais comment arriver à montrer l'image. J'ai les données binaires à l'exécution, de sorte que je ne peux pas faire appel à un site. Comment puis-je faire le codage de base sur les binaires? – Dinkheller

+0

@ProtoBassi - Vérifiez l'édition, alors. –

+0

dans mon message dans la ligne 4. C'est btoa(). Mais cela me donne un problème d'unicode (encore une fois comme décrit dans le lien). C'est là que mes questions commencent. Les solutions de contournement ne m'aident pas, car il semble que l'image est corrompue par ceux-ci). – Dinkheller