Перевод base64 в PNG: таблицы, формулы и онлайн-конвертер

💻 IT и кодОбновлено: 11 июля 2026 г.4 мин чтения
Вы получили base64-строку от клиента или API, но браузер не показывает картинку? В 2026 году есть три рабочих способа: Data URI, бинарный Blob и специализированный онлайн-конвертер. Ниже — готовые решения для Node.js и браузера, таблица форматов и частые ловушки.
⚡ Коротко: главное
  • В 2026 году все современные браузеры полностью поддерживают Data URI до 2 МБ, для больших файлов используйте Blob с URL.createObjectURL.
  • Строка base64 всегда кратна 4 символам; при неверной длине добавьте символы '=', иначе изображение не декодируется.
  • Реальный протокол: декодирование base64 → ArrayBuffer → in-memory PNG → передача в canvas/загрузка — занимает 5-15 мс для картинки 1920×1080.
  • Онлайн-конвертер Base64 в PNG выдаёт мгновенный результат без единой строчки кода — подходит для разовых задач.

Что такое base64 и зачем переводить в PNG

Base64 — это способ кодирования бинарных данных (например, PNG-картинки) в текст из 64 символов (A-Z, a-z, 0-9, +, /). Используется, когда нужно передать изображение через текстовый протокол (JSON, HTML, email). PNG — формат сжатия без потерь, поддерживает прозрачность. Преобразование нужно, чтобы:

  • отобразить картинку на веб-странице без отдельного файла;
  • скачать её на устройство;
  • обработать в canvas (поворот, ресайз).

Формулы и правила: как декодировать base64 в PNG

В основе лежит обратное преобразование: каждый символ текста base64 даёт 6 бит, которые собираются в байты PNG-файла.

Длина декодированных байт = (длина строки base64) * 6 / 8
Строка делится на группы по 4 символа → 3 байта. Если длина не кратна 4 — добавляются символы '=' (паддинг).
Важно: PNG требует правильного заголовка (сигнатура 0x89 0x50 0x4E 0x47). Если после декодирования файл не открывается — проверьте, что входная строка — целое изображение, без HTML-обёртки.

Рабочий пример: браузерный JavaScript (2026)

Пример преобразует base64-строку в PNG и показывает в , а также позволяет скачать.

function base64ToPNG(base64, filename = 'image.png') {
  const byteChars = atob(base64);
  const byteNums = new Array(byteChars.length);
  for (let i = 0; i < byteChars.length; i++) {
    byteNums[i] = byteChars.charCodeAt(i);
  }
  const byteArray = new Uint8Array(byteNums);
  const blob = new Blob([byteArray], { type: 'image/png' });
  const url = URL.createObjectURL(blob);
  // показать в img
  const img = document.getElementById('output');
  img.src = url;
  // скачать
  const a = document.createElement('a');
  a.href = url;
  a.download = filename;
  a.click();
  // освободить память
  URL.revokeObjectURL(url);
}

Пример на Node.js (2026): fs + Buffer

Серверный код на Node.js получает base64 из API и сохраняет PNG на диск.

const fs = require('fs');

function saveBase64AsPNG(base64String, outputPath) {
  // Удаляем заголовок data:image/png;base64, если есть
  const cleaned = base64String.replace(/^data:image\/\w+;base64,/, '');
  const buffer = Buffer.from(cleaned, 'base64');
  fs.writeFileSync(outputPath, buffer);
  console.log('PNG saved:', outputPath);
}

// Пример использования
saveBase64AsPNG('iVBORw0KGgoAAAANSUhEUg...', 'output.png');
Подводный камень: не забудьте удалить префикс data:image/png;base64, если он есть — иначе Buffer.from выдаст мусор.

5 шагов: из base64 в PNG через JavaScript
  1. 1
    Получить строку base64

    Из JSON, input или Data URI.

  2. 2
    Удалить префикс (если есть)

    Регулярка /^data:image\/\w+;base64,/

  3. 3
    Декодировать в байты

    atob() в браузере, Buffer.from() в Node.

  4. 4
    Создать Blob с типом image/png

    new Blob([uint8Array], {type:'image/png'})

  5. 5
    Показать или скачать

    URL.createObjectURL() для img.src или download.

Последовательность действий для декодирования и сохранения PNG в браузере.

Таблица: формат строки base64 для разных случаев

ИсточникПример строкиЧто удалитьПримечание
HTML src (Data URI)data:image/png;base64,iVBOR...data:image/png;base64,в браузере можно сразу вставить в src
JSON от API"image": "iVBOR..."ничегочистая base64 без префикса
Canvas toDataURLdata:image/png;base64,iVBOR...data:image/png;base64,стандартный формат canvas

Чек-лист: корректный перевод base64 в PNG

0 из 8

Частые ошибки и как их отловить

  • Неверная длина строки: base64 без паддинга — добавьте '=' до кратности 4. Используйте base64.padEnd(Math.ceil(base64.length/4)*4, '=').
  • Битый PNG: проверьте первые 4 байта декодированного бинарника — должны быть 0x89 0x50 0x4E 0x47. Если нет — вход не PNG.
  • Огромные строки ( >2 МБ): в браузере atob может выдать ошибку. Используйте fetch('data:image/png;base64,' + bigString).then(r => r.blob()).
  • Пробелы в строке: обрежьте .trim() и удалите символы новой строки .replace(/\s/g, '').

Онлайн-конвертер: быстрый способ без кода

Если нужно единоразово перевести base64 в PNG — проще использовать готовый инструмент. Наш Конвертер Base64 в PNG за секунду превращает строку в готовое для скачивания изображение. Также пригодятся Конвертер PNG в Base64 для обратной задачи, Конвертер JPG в Base64 и Base64 в PDF для других форматов.

Сравнение методов: Blob vs Data URI vs онлайн

МетодПроизводительностьМакс. размерКогда использовать
Data URI в img srcбыстро до ~2 МБ~5 МБ (браузер)небольшие иконки, инлайн
Blob + createObjectURLочень быстродо 1 ГБбольшие файлы, загрузка
Онлайн-конвертермгновеннообычно до 50 МБразовые операции, без кода

🧮 Посчитайте сами — инструменты по теме

🧭 Разделы по теме

Частые вопросы

Что такое base64 и зачем его переводят в PNG?

Base64 — текстовое представление бинарных данных. Перевод в PNG нужен, чтобы отобразить картинку на сайте, скачать её или обработать графически.

Как проверить, что строка base64 — это именно PNG?

Декодируйте первые 4 байта: PNG-файл всегда начинается с сигнатуры 89 50 4E 47 0D 0A 1A 0A (первые 8 байт). Можно также проверить content-type, если строка получена с сервера.

Что делать, если после декодирования PNG не открывается?

Проверьте три вещи: не забыли ли удалить префикс data:..., нет ли лишних пробелов/переносов, и правильная ли длина строки (кратна 4). Используйте hex-редактор для проверки первых байт.

Почему atob() выдаёт ошибку для больших строк?

atob() в некоторых браузерах ограничен размером (обычно ~2 MB). Для больших строк используйте fetch с Data URI или разбейте на части.

Как преобразовать base64 в PNG в Node.js?

Используйте Buffer.from(base64String, 'base64') и запишите результат в файл с fs.writeFileSync. Предварительно удалите data:... префикс, если он есть.

Есть ли разница между декодированием в браузере и на сервере?

В браузере метод atob() возвращает строку, которую нужно превратить в Uint8Array. На сервере Node.js Buffer.from работает напрямую. В остальном результат одинаков.

Как использовать онлайн-конвертер base64 в PNG?

Вставьте строку base64 в поле ввода (с префиксом или без) и нажмите 'Конвертировать'. Через секунду получите готовый PNG для скачивания.

Можно ли преобразовать base64 другого формата (JPG, GIF) в PNG?

Нет, декодирование base64 даёт исходный бинарник. Если исходник был JPG, то и после декодирования будет JPG. Чтобы конвертировать в PNG, нужно дополнительное декодирование/кодирование изображения.

Источники и нормативные документы

  1. MDN: Base64 encoding and decoding
  2. W3C: Data URIs
  3. Спецификация PNG (RFC 2083)

Ещё по теме «IT и код»