Я сохранил несколько изображений в 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, поэтому случайный человек не может видеть изображения.
Есть ли способ сделать это без сохранения фактического изображения на сервере?
Если вы хотите уменьшить качество изображения, это лучше сделать как часть создания изображения, так как это должно быть изображение, а не строка base64, чтобы вы могли выполнять любое преобразование изображения.






Вы можете использовать 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);
}
Не совсем уверен, что вы спрашиваете здесь? Вы хотите уменьшить качество изображения? Или хранить изображения в другом месте? Если он хранит изображения где-то еще, ГДЕ вы хотите их хранить