как преобразовать и сохранить base64 в png на php

Аватар пользователя Nikolai Gagarinov
Nikolai Gagarinov
26 февраля 2025

Если нужно превратить строку в 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
Познакомьтесь с основами PHP бесплатно