2011-11-22 121 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