2010-12-31 9 views
13

Ich habe eine Upload-Api, die als Antwort-Objekt liefert (zusammen mit anderen Sachen in einem Json-Objekt) ein Base64-codierte JPEG-Bild.Wie erstellt man GD Image von base64-kodierten JPEG?

I erstellen das codierte Bild als so:

$im; // gd image resource 
ob_start(); 
imagejpeg($im); 
$data = base64_encode(ob_get_clean()); 

Die Daten werden dann in ein Formularfeld gesetzt wird JavaScript und abgegeben werden.

Wie kann ich wieder eine GD-Ressource erstellen, so dass ich das Bild tatsächlich als Datei speichern kann?

Alles in PHP.

Antwort

29

können Sie imagecreatefromstring() Funktion:

$data = base64_decode($_POST['image_as_base64']); 

$formImage = imagecreatefromstring($data); 

"String" bedeutet nicht, eine "echte" String. In diesem Fall bedeutet es Bytes/Blob-Daten.

14

Wie kann ich wieder eine GD-Ressource erstellen, sodass ich das Bild tatsächlich als Datei speichern kann?

Sind Sie sicher, dass Sie diesen zusätzlichen Schritt tun müssen? Wie wäre es:

file_put_contents('MyFile.jpg', base64_decode($_POST['MyFormField'])); 
+1

ja, sieht die beste Art und Weise;) meiner Meinung nach irgendwie blockiert wurde: D +1 aber werde die andere Antwort akzeptieren, weil es ein directa war antwort auf meine q –

+1

@Joe Hopfgartner - Harrumph! Nun, ein frohes neues Jahr für dich sowieso, wann immer das für dich ist. : D –

+0

manchmal macht dieser Schritt es nicht aus. TCPDF einige Software, die ich hier verwendet, aber mit GD arbeitete – Dennis

0

ich auf diese Weise tat

// input is in format: data:image/png;base64,... 
$str="data:image/png;base64,"; 
$data=str_replace($str,"",$_POST['image']); 
$data = base64_decode($data); 
file_put_contents('tmp/'.mktime().'.png', $data); 
Verwandte Themen