Как создать и сохранить изображение в папке веб-сайта из данных / строки в кодировке Base64 с помощью переполнения стека

У меня есть следующий код в моем php-файле, который работает нормально, он декодирует строку base64 и показывает это как изображение на веб-странице, но я хочу, чтобы он тоже сохранялся в папке.

<?php
$base = $_POST['encoded'];
$base = base64_decode($base);

$im = imagecreatefromstring($base);
if ($im !== false) {
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
}
else {
echo 'An error occurred.';
}
?>

я уже пробовал решение, описанное в этих ссылках, но ни одна из них не работает для меня

Как сохранить PNG-изображение на стороне сервера, из строки данных base64

Как создать изображение GD из JPEG в кодировке base64?

какая будет дополнительная строка кода, которая может сохранить это изображение в папку

0

Решение

$base = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
.'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
.'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
.'8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';
$base = base64_decode($base);

$im = imagecreatefromstring($base);
if ($im !== false) {
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
}
else {
echo 'An error occurred.';
}

Ну, код работал для меня.
Если вы видите пустую страницу, это означает, что закодированная строка неверна.

0

Другие решения

Права доступа к файлу не были установлены в режим записи. установите его на 777 и протестируйте с помощью следующего кода.

<?php
$base = $_POST['encoded'];
$base = base64_decode($base);

$im = imagecreatefromstring($base);
if ($im !== false) {
header('Content-Type: image/png');

imagepng($im,'image.png'); // saving image to the same directory

imagedestroy($im);

}
else {
echo 'An error occurred.';
}
?>
0

Этот код работает для изображения JPEG

$data = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHB'; // image data

define('UPLOAD_DIR','dir_path/'); // image dir path

list($type, $data) = explode(';', $data);

list(, $data)      = explode(',', $data);

$data = str_replace(' ', '+', $data);

$data = base64_decode($data); // base 64 decoding

file_put_contents(UPLOAD_DIR.$img_name.".jpeg", $data); // saving the image to required path
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector