web-dev-qa-db-fra.com

J'ai un png encodé en base64, comment écrire l'image dans un fichier en PHP?

Quelle est la bonne façon en PHP pour créer un fichier image (PNG), quand j'ai l'encodage base64?

J'ai joué avec:


file_put_contents('/tmp/'. $_REQUEST['id'].'.png', $_REQUEST['data']);

dois-je décoder? dois-je utiliser la bibliothèque Gd?

38
mmattax

Ma meilleure supposition est que vous devez simplement appeler base64_decode() sur $_REQUEST['data'] avant de l'écrire dans le fichier. Cela devrait suffire :).

Vous devez utiliser base64_decode (). ET. Parfois, ce n'est pas suffisant. Voici tout le code dont vous avez besoin:

$img = $_POST['data'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$fileData = base64_decode($img);
//saving
$fileName = 'photo.png';
file_put_contents($fileName, $fileData);

P.S. J'ai utilisé ce code pour obtenir une image PNG à partir d'un canevas html.

52
Yevgeniy Afanasyev

Je pense que vous voudriez décoder avec base64_decode () à moins que vous ne l'utilisiez que tel qu'il est ici ICI .

La chose dont je suis sûr, c'est que vous voudrez aseptiser $ _REQUEST ['id'] avant de l'utiliser.

6
Chris Kloberdanz