У меня есть таблица с именем users, и у каждой строки (user) есть изображение.
Изображение сохраняется как 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 ....
Thisсначала работал, но так как на каждой странице нужно показывать все больше и больше изображений, он действительно загружается, поэтому теперь я хочу создавать эскизы, сохраненные в файловой системе сервера, с использованием 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 символа для именования изображений.