2012-08-14 137 views
5

我正在用js操作圖像,並且我想保存這些轉換後的圖像。我與AJAX發佈這樣的數據:php imagick - 從base64讀取圖像

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

這樣,我得到了圖像中的Base64編碼,但我不能找到一種方法,用Imagick讀它。

這是我的過程:

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

但這種失敗:

致命錯誤:未捕獲的異常 'ImagickException' 有消息 '沒有解碼委託這種圖像格式`' @錯誤/ blob.c/BlobToImage在/Library/WebServer/Documents/test/save.php:7/360' 堆棧跟蹤:

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

任何想法爲什麼?

回答

10

想通了。

我不得不從發佈的字符串中刪除data:image/png;base64,部分,然後imagick可以將其解釋爲blob。 -

2

閱讀本網址; -

PHP-Imagemagick image display

或嘗試: -

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

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

readImageBlob從二進制字符串讀取圖像: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

當給一個答案最好是給予[一些解釋,爲什麼你的答案](http://stackoverflow.com/help/how是答案)。 – 2017-02-14 02:33:07