У меня есть изображения, сохраненные в базе данных MariaDB как BLOBS.
У меня есть функция в PHP, при которой каждый раз, когда кто-то просматривает изображение, счетчик увеличивается (количество загрузок в изображение увеличивается).
Проблема в том, что когда я хочу просто показать миниатюру изображения через
У меня есть функция, где я получаю большой двоичный объект изображения из базы данных, уменьшаю его размер и просматриваю его для пользователя в виде миниатюры. И вот как я это делаю:
try {
$stmt = $this->db->prepare("SELECT type, impressions, filename, data FROM Files WHERE fileId = :id");
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->execute();
if (!$item = $stmt->fetch(PDO::FETCH_ASSOC)) {
throw new InvalidArgumentException('Invalid id: ' . $id);
} else {
$filename = $item['filename'];
$type = $item['type'];
$data = $item['data'];
$image = imagecreatefromstring($data);
$image = imagescale($image, 100, 100);
header('Content-Type: image/jpeg');
imagejpeg($image);
return true;
}
Но это может замедлить процесс. Поэтому я решил загрузить изображения с измененным размером в другую таблицу как BLOBS. Но как я могу это сделать?
Существуют разные страницы, на которых показано, как изменить размер изображения. Но я получаю «файл изображения».
У меня есть это:
$src = imagecreatefromstring($data); //$data is the BLOB of original file
$dst = imagecreatetruecolor( $width, $height );
imagecopyresampled($dst, $src, 0, 0, 0, 0, $width, $height, $size[0], $size[1] );
$ data - это BLOB оригинального изображения.
Теперь я уменьшил версию изображение $ dst.
Либо мне нужно «повторить» это, либо мне нужно найти его для сохранения в базе данных как BLOB. Но как я могу преобразовать $ dst в BLOB?
Или, когда я загружаю изображение, я загружу «уменьшенную версию» BLOB в другую таблицу в базе данных.
Существуют разные страницы, где они показывают, как изменить размер изображения. Но я получаю «файл изображения».
У меня есть это:
$src = imagecreatefromstring($data); //$data is the BLOB of original file
$dst = imagecreatetruecolor( $width, $height );
imagecopyresampled($dst, $src, 0, 0, 0, 0, $width, $height, $size[0], $size[1] );
$ data - это BLOB оригинального изображения.
Теперь я уменьшил версию изображение $ dst.
Либо мне нужно «повторить» это, либо мне нужно найти его для сохранения в базе данных как BLOB. Но как я могу конвертировать $ dst в BLOB?