65 votes

Image codée en base64

Je suis en train de créer un module complémentaire de recherche ouverte pour Firefox/IE et l'image doit être encodée en base 64. Comment puis-je encoder en base 64 la favicon que j'ai ?

Je ne connais que le PHP

81voto

Ross Points 19037

Si je me souviens bien, il existe un élément xml pour les données de l'image. Vous pouvez utiliser ceci site web pour encoder un fichier (utilisez le champ de téléchargement). Il suffit ensuite de copier et de coller les données dans l'élément XML.

Vous pouvez aussi utiliser PHP pour faire cela comme suit :

 <?php
        $im = file_get_contents('filename.gif');
        $imdata = base64_encode($im);      
?> 

Utilice Le guide de Mozilla pour obtenir de l'aide sur la création de plugins OpenSearch. Par exemple, l'élément icône est utilisé comme suit :

<img width="16" height="16">data:image/x-icon;base64,imageData</>

imageData est votre donnée en base64.

2 votes

Dans ce cas, base64_encode ne codera que le "resource handle" de l'image, je crois, voire rien du tout. Vous devez lire le contenu réel du fichier. L'utilisation du site web de l'encodeur base64 devrait fonctionner, cependant.

2 votes

Cela ne fonctionne pas du tout pour moi. $im est un resource et je reçois une erreur base64_encode() expects parameter 1 to be string, resource given

2 votes

Les commentaires ci-dessus faisaient référence à une édition précédente, hakre a corrigé mon erreur. @stevether cela devrait maintenant fonctionner.

14voto

thefreeman Points 526
$encoded_data = base64_encode(file_get_contents('path-to-your-image.jpg'));

5 votes

@davidcorda - La brièveté est acceptable, mais des explications plus complètes sont préférables. stackoverflow.com/questions/how-to-answer

9voto

dlamblin Points 14546

Mon synopsis de rfc2397 est :

Une fois que vous avez obtenu vos données d'image codées en base64, placez-les à l'intérieur des balises <Image></Image> préfixées avec " data:{mimetype};base64, "c'est similaire à la préfixation effectuée dans les parenthèses de url() dans le CSS ou dans la valeur cotée de la src de l'attribut img en [X]HTML. Vous pouvez tester l'url de données dans firefox en mettant la balise data:image/... dans le champ URL et en appuyant sur la touche Entrée, votre image devrait s'afficher.

Pour l'encodage réel, je pense que nous devons passer en revue toutes vos options, pas seulement PHP, parce qu'il y a tellement de façons d'encoder quelque chose en base64.

  1. Utilisez le base64 outil de ligne de commande. Il fait partie des GNU coreutils (v6+) et est présent par défaut dans tous les systèmes d'exploitation. Cygwin , L i n u x , GnuWin32 mais pas les BSD que j'ai essayés. Problème : $ base64 imagefile.ico > imagefile.base64.txt
  2. Utilisez un outil qui offre la possibilité de convertir en base64, par exemple Notepad++ qui possède la fonctionnalité sous plugins->outils IMME->encodage base64
  3. Envoyez le fichier par courriel et affichez le contenu brut du courriel, copiez et collez.
  4. Utilisez un web formulaire .

Une note sur les mime-types : Je préfère que vous utilisiez l'un des image/png image/jpeg o image/gif comme je ne peut pas trouver le populaire image/x-icon . Cela devrait-il être image/vnd.microsoft.icon ? Les autres formats sont également beaucoup plus courts.

comparez 265 octets contre 1150 octets :

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAVFBMVEWcZjTcViTMuqT8/vzcYjTkhhTkljT87tz03sRkZmS8mnT03tT89vTsvoTk1sz86uTkekzkjmzkwpT01rTsmnzsplTUwqz89uy0jmzsrmTknkT0zqT3X4fRAAAAbklEQVR4XnXOVw6FIBBAUafQsZfX9r/PB8JoTPT+QE4o01AtMoS8HkALcH8BGmGIAvaXLw0wCqxKz0Q9w1LBfFSiJBzljVerlbYhlBO4dZHM/F3llybncbIC6N+70Q7OlUm7DdO+gKs9gyRwdgd/LOcGXHzLN5gAAAAASUVORK5CYII=

data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAD/////ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv///////////2ZmZv9mZmb/ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv9mZmb///////////9mZmb/ZmZm//////////////////////////////////////////////////////9mZmb/ZmZm////////////ZmZm/2ZmZv//////ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv//////ZmZm/2ZmZv///////////2ZmZv9mZmb//////2ZmZv9mZmb/ZmZm/2ZmZv9mZmb/ZmZm/2ZmZv9mZmb//////2ZmZv9mZmb///////////9mZmb/ZmZm////////////////////////////8fX4/8nW5P+twtb/oLjP//////9mZmb/ZmZm////////////////////////////oLjP/3eZu/9pj7T/M2aZ/zNmmf8zZpn/M2aZ/zNmmf///////////////////////////////////////////zNmmf8zZpn/M2aZ/zNmmf8zZpn/d5m7/6C4z/+WwuH/wN/3//////////////////////////////////////+guM//rcLW/8nW5P/x9fj//////9/v+/+w1/X/QZ7m/1Cm6P//////////////////////////////////////////////////////7/f9/4C+7v8xluT/EYbg/zGW5P/A3/f/0933/9Pd9//////////////////////////////////f7/v/YK7q/xGG4P8RhuD/MZbk/7DX9f//////4uj6/zJh2/8yYdv/8PT8////////////////////////////UKbo/xGG4P8xluT/sNf1////////////4uj6/zJh2/8jVtj/e5ro/////////////////////////////////8Df9/+gz/P/////////////////8PT8/0944P8jVtj/bI7l/////////////////////////////////////////////////////////////////2yO5f8jVtj/T3jg//D0/P///////////////////////////////////////////////////////////3ua6P8jVtj/MmHb/+Lo+v////////////////////////////////////////////////////////////D0/P8yYdv/I1bY/9Pd9///////////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==

6voto

Imran Kabir Points 71

Consultez l'exemple suivant :

// First get your image
$imgPath = 'path-to-your-picture/image.jpg';
$img = base64_encode(file_get_contents($imgPath));
echo '<img width="100" height="100" src="data:image/jpg;base64,'. $img .'" />'

0voto

OysterD Points 2698

Google m'a conduit à este solution (base64_encode). J'espère que cela vous aidera !

1 votes

Oui je sais comment l'encoder mais comment obtenir juste les données de l'image pour qu'elle soit encodée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X