2014-10-30 57 views
2
$path=getcwd(); 
$rawstring = $_POST['img_data'];  
$malestr = str_replace("data:image/jpeg;base64,", "", $rawstring); 
$img = new Imagick(); 
$img->readImageBlob($malestr); 
$img->writeImage($path."/media/import/new.jpg"); 

這是我的Imagick函數,我試圖用base64編碼數據編寫圖像。它的投擲錯誤 。沒有解碼這個圖像格式的代表 - Imagick - php

「沒有解碼委託這種圖像格式」

+0

'readImageBlob'獲取二進制字符串。首先解碼'$ malestr'的​​內容 - 使用函數'base64_decode' – Cheery 2014-10-30 06:40:53

+0

謝謝Cherry,請檢查這個問題。堅持一個pbm。 http://stackoverflow.com/questions/26669087/imagick-unsupported-marker-type-0x68 – Sundar 2014-10-31 07:00:59

+0

看看這裏,並檢查原始$ malestr(解碼之前)沒有空格,+應該是https://www.ngxo .com/search/image-upload/62 – Cheery 2014-10-31 07:34:02

回答

2

根據說明書,Imagick::readImageBlob需要一個二進制字符串,而您提供一個base64編碼字符串它。首先用函數base64_decode解碼字符串,並將結果提供給readImageBlob

// your code above 
$malestr = str_replace("data:image/jpeg;base64,", "", $rawstring); 

$malestr = base64_decode($malestr); 
if (!$malestr) die('Unable to decode the string'); 

$img = new Imagick(); 
$img->readImageBlob($malestr); 
+0

http://stackoverflow.com/questions/26669087/imagick-unsupported-marker-type-0x68請檢查這個問題@Cherry – Sundar 2014-10-31 07:00:28