Имам таблица с име потребители и всеки ред (потребител) има изображение.
Изображението се съхранява като 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
За всеки запис в базата данни.
---- РЕДАКТИРАНЕ ----
Забравих да спомена, че random_32() е функция, която генерира случаен низ с дължина 32 знака, така че изображенията да бъдат именувани.