Как сжать/уменьшить качество изображения base64 с помощью php?

Я сохранил несколько изображений в base64 в своей базе данных. Я получаю изображения, используя php в качестве пути к изображению. Но я хочу уменьшить размер своего изображения при декодировании его из base64, потому что это замедляет работу моего приложения, если я загружаю полноразмерное изображение. (Полноразмерное изображение мне нужно только в бэкенде).

/* 

DB stuff getting base64 string from database

$img = base64 string (can be with 'data:image/jpg;base64,' in front, thats for the str_replace())
*/

if ($img){
  header("Content-Type: image/png");
  echo base64_decode(str_replace("data:image/jpg;base64,","",$img));
}

Все работает хорошо таким образом. Я использую это так:

<img src = "http://example.com/getimg.php?id=4" />

или в css. Мне это нужно из соображений безопасности, я не могу хранить изображения на сервере, также в пути у меня есть переменная access_token, поэтому случайный человек не может видеть изображения.

Есть ли способ сделать это без сохранения фактического изображения на сервере?

Не совсем уверен, что вы спрашиваете здесь? Вы хотите уменьшить качество изображения? Или хранить изображения в другом месте? Если он хранит изображения где-то еще, ГДЕ вы хотите их хранить

RiggsFolly 15.05.2019 12:54

Если вы хотите уменьшить качество изображения, это лучше сделать как часть создания изображения, так как это должно быть изображение, а не строка base64, чтобы вы могли выполнять любое преобразование изображения.

RiggsFolly 15.05.2019 12:56
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
2
10 669
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать imagecreatefromstring и imagecopyresized.

Живой пример здесь

<?php
if ($img) {
    $percent = 0.5;

    // Content type
    header('Content-Type: image/jpeg');

    $data = base64_decode($img);
    $im = imagecreatefromstring($data);
    $width = imagesx($im);
    $height = imagesy($im);
    $newwidth = $width * $percent;
    $newheight = $height * $percent;

    $thumb = imagecreatetruecolor($newwidth, $newheight);

    // Resize
    imagecopyresized($thumb, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

    // Output
    imagejpeg($thumb);
}

Другие вопросы по теме