我有一个名为users的表,每行(用户)都有一个图像。从mysql存储图像创建缩略图
的图像存储为BLOB在使用此代码MySQL数据库:
$filename = $_FILES['image']['tmp_name'];
$size = getimagesize($filename);
$handle = fopen($filename , "rb");
$content = fread($handle , filesize($filename));
fclose($handle);
unlink($filename);
$image = base64_encode($content);
// .... send query to database ....
这个工作在第一,但随着越来越多的图像必须在每一页中显示,它变得非常加载,所以现在我想用php GD创建缩略图,保存在服务器的文件系统中。
我有下面的代码,但我不知道该怎么做才能从数据库中读取图像,所以我可以创建它的缩略图。
$query = "SELECT * FROM users;";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)) {
$uploaded_image = base64_decode($row['image']);
$size = getimagesize($uploaded_image); <--------------------
$dimension_x = 73;
$dimension_y = 73;
$directory = 'views/images/generated/people/';
do{
$filename = random_32();
$filename = $directory.$filename.'.jpg';
} while(file_exists($filename));
$image = imagecreatefromjpeg($uploaded_image);
$thumb = imagecreatetruecolor($dimension_x , $dimension_y);
$size = getimagesize($uploaded_image);
imagecopyresampled($thumb , $image , 0 , 0 , 0 , 0 , $dimension_x , $dimension_y , $size['0'], $size['1']);
imagejpeg($thumb , $filename , 100);
}
我想找到什么,我应该把箭头放在哪里使脚本工作。
所有现在所做的就是输出
Warning: getimagesize(ÿØÿà): failed to open stream: No such file or directory in /var/www/play/ns4/models/create_thumbs_people.php on line 12
对于数据库中的每个条目。
---- ---- EDIT
忘记提到,random_32()是生成32个字符长随机数序列,以使图像被命名的功能。
我试过了你的代码,改变了imagecopyresampled中的值,它就像一个魅力! – ppp 2012-01-29 02:32:23