2011-11-22 45 views
0

我繼續嘗試從我的數據庫獲取的圖像,並將其旋轉後得到這個錯誤:無法與PHP的imagerotate旋轉圖像

Warning: imagecreatefromstring() [function.imagecreatefromstring]: Data is not in a recognized format 

這裏是我打電話給BLOB數據轉換回一個旋轉的圖像:

$SQL="SELECT * FROM images WHERE id={$id}"; 
$rh = mysql_query($SQL); 

$image=mysql_result($rh,0,"image"); 
$source_image=imagecreatefromstring($image); 

$rotate_image = imagerotate($source_image, 90, 0); 

我是否錯過了一個步驟?

+1

什麼列類型是'image'柱? – nickb

+0

的類型是:mediumblob – Paul

+0

您的錯誤與imagerotate無關。警告意味着你給'imagecreatefromstring()'的數據不能被解釋爲圖像。您要麼沒有正確存儲或檢索圖像數據。 –

回答

1

這是我落得這樣做,它的工作:

$SQL="SELECT * FROM images WHERE id={$id}"; 
$rs = mysql_query($SQL); 

//rotate image 
$image=mysql_result($rs,0,"image"); 
$source_image=imagecreatefromstring($image); 

$rotate_image = imagerotate($source_image, 270, 0); 

ob_start(); 
imagejpeg($rotate_image, null, 100); 
$image_bin = mysql_real_escape_string(ob_get_contents()); data. 
ob_end_clean(); 
0

我建議將圖像數據存儲在base64中。存儲字符和二進制文件沒有問題。

然後,它很容易爲:

<?php 
$data = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl' 
     . 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr' 
     . 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r' 
     . '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg=='; 
$data = base64_decode($data); 

$im = imagecreatefromstring($data); 
if ($im !== false) { 
    header('Content-Type: image/png'); 
    imagepng($im); 
    imagedestroy($im); 
} 
else { 
    echo 'An error occurred.'; 
} 
?> 

來源:http://php.net/manual/fr/function.imagecreatefromstring.php