2012-08-14 12 views
5

Ich manipuliere Bilder mit js, und ich möchte diese transformierten Bilder speichern. Ich poste diese Daten mit Ajax:php imagick - Bild von base64 lesen

image : canvas.toDataURL('image/jpeg') 

Auf diese Weise habe ich die Base64-Code für das Bild zu bekommen, aber ich kann nicht einen Weg, es zu lesen mit Imagick finden.

Das ist mein Prozess:

$img = new Imagick(); 
$decoded = base64_decode($_POST['image']); 
$img->readimageblob($decoded); 

Aber das scheitert:

Fatal error: abgefangene Ausnahme 'ImagickException' mit der Meldung 'keine dekodieren Delegat für dieses Bildformat `' @ Fehler/blob.c/BlobToImage/360' in /Library/WebServer/Documents/test/save.php:7 Stapelüberwachung:

# 0 /Library/WebServer/Documents/test/save.php(7): Imagick-> readimageblob ('u? Z? f? {?? z ????? ...')

Irgendwelche Ideen warum?

Antwort

10

herausgefunden.

Ich musste den data:image/png;base64, Teil aus der veröffentlichten Zeichenfolge entfernen, und dann imagick könnte es als Blob interpretieren.

2

diese URL lesen; -

PHP-Imagemagick image display

oder versuchen Sie es: -

$thumbnail = $img->getImageBlob(); 
$contents = ob_get_contents(); 
ob_end_clean(); 

echo "<img src='data:image/jpg;base64,".base64_encode($contents)."' />"; 
-1

readImageBlob - Liest Bild aus einer binären Zeichenfolge: http://php.net/manual/en/imagick.readimageblob.php

$base64 = "iVBORw0KGgoAAAAN...."; 

$imageBlob = base64_decode($base64); 

$imagick = new Imagick(); 
$imagick->readImageBlob($imageBlob); 

header("Content-Type: image/png"); 
echo $imagick; 
+1

Wenn eine Antwort gibt es vorzuziehen ist, um [eine Erklärung, warum Ihre Antwort] (http://stackoverflow.com/help/how (zu antworten) ist der eine. –