我有一個名爲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