323 votes

Comment convertir une image en encodage Base64 ?

Comment puis-je convertir une image d'une URL en encodage Base64 ?

4 votes

Pourquoi voulez-vous faire ça ?

8 votes

Pour l'intégrer dans l'attribut src de la balise Img

6 votes

Il s'agit d'un vieux fil de discussion, mais par souci d'exhaustivité : Il est très utile de coder les images, en particulier les petites (moins de 1k), pour les utiliser en css. De cette façon, vous économisez une requête, qui prendrait plus de temps et pourrait même être plus grande, en raison de l'overhead.

662voto

Ronny Sherer Points 1071

Je pense que ça devrait l'être :

$path = 'myfolder/myimage.png';
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);

11 votes

Cela dépend de la raison pour laquelle vous avez besoin de l'image. Si c'est en tant qu'URL en ligne, c'est la solution. Mais ce n'est pas identique au simple encodage base64.

0 votes

Excellente astuce, maintenant je vais créer une fonction pour éditer le fichier téléchargé, ou un revert move_uploaded_file(), merci.

1 votes

Cela a marché comme un charme ! J'étais coincé avec l'image DomPDF depuis un moment maintenant, merci beaucoup pour cela !

133voto

Pekka 웃 Points 249607

Facile :

$imagedata = file_get_contents("/path/to/image.jpg");
             // alternatively specify an URL, if PHP settings allow
$base64 = base64_encode($imagedata);

Gardez à l'esprit que cela va agrandir les données de 33%, et vous aurez des problèmes avec les fichiers dont la taille dépasse votre capacité de stockage. memory_limit .

1 votes

@anna, c'est le cas ! L'encodage Base64 permet généralement de le faire.

41voto

Utilisez également cette méthode pour représenter une image dans un format codé en Base64...

Trouvez la fonction PHP file_get_content et ensuite utiliser la fonction base64_encode .

Et obtenir le résultat pour préparer la chaîne comme data:" . file_mime_type . " base64_encoded string . Utilisez-le dans le img src attribut. Le code suivant peut être utile :

// A few settings
$img_file = 'raju.jpg';

// Read image path, convert to base64 encoding
$imgData = base64_encode(file_get_contents($img_file));

// Format the image SRC:  data:{mime};base64,{data};
$src = 'data: '.mime_content_type($img_file).';base64,'.$imgData;

// Echo out a sample image
echo '<img src="'.$src.'">';

1 votes

Si vous ne trouvez pas la fonction mime_content_type, ajoutez simplement la fonction de svogal de php.net/manual/fr/function.mime-content-type.php

13voto

GoldenGonaz Points 30
<img src="data:image/png;base64,<?php echo base64_encode(file_get_contents("IMAGE URL HERE")) ?>">

J'ai essayé d'utiliser cette ressource, mais j'obtenais toujours une erreur. Le code ci-dessus a parfaitement fonctionné.

J'ai juste remplacé "IMAGE URL HERE" par l'URL de votre image - http://www.website.com/image.jpg

0 votes

Cela vaut la peine

-6voto

Sammy Points 1

Je ne sais pas comment vous faites, mais je suppose que si vous voulez utiliser une url base64 au lieu d'une url réelle, je ne pense pas que ce soit une très bonne idée. Je pense que ce serait une meilleure idée d'avoir le fichier image sur votre serveur, et de simplement créer un lien vers lui via le SRC de l'image. Cela rend également le code source TRÈS volumineux et difficile à modifier si vous devez apporter des modifications à votre site Web.

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