как преобразовать и сохранить base64 в png на php
Ответы
Если нужно превратить строку в Base64 в PNG-файл на PHP, вот как это делается.
$data = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA...";
Нужно убрать лишние метаданные, чтобы остался только чистый Base64:
if (preg_match('/^data:image\/(png|jpeg);base64,/', $data, $type)) {
$data = substr($data, strpos($data, ',') + 1);
$type = strtolower($type[1]);
} else {
throw new Exception('Неправильный формат данных.');
}
Теперь декодируем строку с помощью base64_decode()
:
$data = base64_decode($data);
if ($data === false) {
throw new Exception('Ошибка декодирования данных.');
}
После этого сохраняем данные в файл:
$filePath = 'path/to/your/image.png'; // путь для сохранения файла
if (file_put_contents($filePath, $data) === false) {
throw new Exception('Не удалось сохранить файл.');
} else {
echo "Файл успешно сохранен: $filePath";
}
Вот и весь код в одном месте:
<?php
try {
$data = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA..."; // картинка
if (preg_match('/^data:image\/(png|jpeg);base64,/', $data, $type)) {
$data = substr($data, strpos($data, ',') + 1);
$type = strtolower($type[1]);
} else {
throw new Exception('Неправильный формат данных.');
}
$data = base64_decode($data);
if ($data === false) {
throw new Exception('Ошибка декодирования данных.');
}
$filePath = 'path/to/your/image.png';
if (file_put_contents($filePath, $data) === false) {
throw new Exception('Не удалось сохранить файл.');
} else {
echo "Файл успешно сохранен: $filePath";
}
} catch (Exception $e) {
echo 'Ошибка: ' . $e->getMessage();
}
Перед этим стоит проверить, есть ли права на запись в директории, куда сохраняем файл. Можно использовать также готовые библиотеки
1
0