J'ai un png encodé base64, Comment puis-je écrire l'image dans un fichier en PHP?

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

j'ai été jouer avec:


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

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

33
demandé sur mmattax 2009-10-07 21:14:28

3 réponses

Ma meilleure supposition est que vous avez simplement besoin d'appeler base64_decode() sur $_REQUEST['data'] avant d'écrire dans le fichier. Qui devrait être amplement suffisant :).

33
répondu Thibault Martin-Lagardette 2009-10-07 17:21:53

vous devez utiliser base64_decode(). ET. Parfois, il 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. M. j'ai utilisé ce code pour obtenir une image PNG à partir d'une toile html.

47
répondu Yevgeniy Afanasyev 2015-06-30 01:42:42

je pense que vous voudriez décoder avec base64_decode () à moins que vous ne l'utilisiez seulement comme ils sont ici ici .

la chose dont je suis sûr est que vous voudrez assainir $_REQUEST['id'] avant de l'utiliser.

6
répondu Chris Kloberdanz 2009-10-07 17:29:46