Как изменить размер загруженного изображения и сохранить его в базе данных как blob? - PullRequest
0 голосов
/ 02 мая 2020

У меня есть изображения, сохраненные в базе данных 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...