как преобразовать и сохранить base64 в png на php — Q&A Хекслет
2026-02-26 16:40 Diff

Если нужно превратить строку в 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(); }

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