> base64 | decode | JPG <
// Декодируйте строки Base64 и URI данных обратно в фотографии JPG / JPEG — EXIF сохраняется, мгновенный предпросмотр, скачивание в один клик
Декодированный JPEG появится здесь
Без повторного сжатия
Байты JPEG, выходящие из декодера, побитово идентичны тому, что было закодировано — то же качество, тот же EXIF, те же DCT-коэффициенты.
Локальное декодирование
Ваша Base64-строка декодируется с помощью atob() полностью в браузере. Без загрузки. Без сервера. Без аналитики на полезной нагрузке.
Живой предпросмотр
Смотрите декодированное фото и его размеры немедленно — скачивайте как .jpg одним кликом.
// О КОНВЕРТАЦИИ BASE64 В JPG
Что принимает этот инструмент
- >URI данных: data:image/jpeg;base64,/9j/4AAQSkZ…
- >Сырая полезная нагрузка JPEG Base64 (начинается с /9j/)
- >Base64 со встроенными пробелами / переносами строк
- >Стандартный алфавит RFC 4648 (+/, опциональный padding =)
- >URL-safe Base64 (-_) — авто-нормализуется при декодировании
- >Многосекционные JPEG (маркеры JFIF, EXIF, Adobe, SPIFF)
Частые сценарии использования
- >Восстановление фотографии из ответа JSON API
- >Извлечение аватара профиля из TEXT-колонки базы данных
- >Декодирование поля изображения CMS, хранящегося как URI данных
- >Реконструкция фотографии из MIME-части email
- >Отрисовка снимка с камеры, отправленного по WebSocket
- >Отладка сломанного тега <img src="data:image/jpeg;base64,…">
- >Оффлайн-first приложения, кэширующие фотографии как Base64
Как работает декодирование Base64 → JPG
Декодер удаляет любой префикс URI данных, нормализует пробелы и URL-safe символы, затем вызывает atob() для преобразования каждой 4-символьной группы Base64 обратно в 3 бинарных байта. Результат оборачивается в Blob с MIME-типом image/jpeg и отображается предпросмотром через тег <img>. Поскольку Base64 — это биективное бинарно-текстовое преобразование, выходной JPEG побитово идентичен оригиналу — его SHA-256 хэш совпадает, и качество не теряется.
Пример URI данных JPEG:
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/wAALCAABAAEBAREA/8QAFQABAQAAAAAAAAAAAAAAAAAAAAv/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/9oACAEBAAA/AKp//9k=
Производительность и совместимость
- >Декодирование O(n) по длине полезной нагрузки — без проблем обрабатывает 100 МБ+
- >Использует нативные atob() + Uint8Array — без сторонних библиотек
- >Поддерживает EXIF-богатые JPEG от каждого крупного производителя камер
- >Работает в Chrome, Firefox, Safari, Edge и мобильных браузерах
- >Предпросмотр с pinch-to-zoom на мобильных устройствах
- >Скачивание через Blob URL — без обращения к серверу
// КАК ДЕКОДИРОВАТЬ BASE64 В JPG
Шаг 1: Вставьте
Вставьте строку Base64 или полный URI данных в поле ввода
Шаг 2: Декодируйте
Нажмите [DECODE] — JPEG отрисовывается мгновенно
Шаг 3: Проверьте
Проверьте фотографию, её размеры и размер файла перед сохранением
Шаг 4: Скачайте
Нажмите [DOWNLOAD .jpg], чтобы сохранить побитово идентичный JPEG на диск
// ПРИМЕРЫ КОДА — BASE64 В JPG
JavaScript (браузер)
// Decode Base64 → JPEG Blob → preview
const b64 = '/9j/4AAQSkZJRgAB...';
const bin = atob(b64);
const arr = new Uint8Array(bin.length);
for (let i = 0; i < bin.length; i++) arr[i] = bin.charCodeAt(i);
const blob = new Blob([arr], { type: 'image/jpeg' });
document.getElementById('preview').src = URL.createObjectURL(blob);
Декодируйте сырую полезную нагрузку Base64 JPEG, оберните в Blob и отрисуйте с помощью <img>. URI данных можно задавать напрямую в src.
Node.js
const fs = require('fs');
const b64 = '/9j/4AAQSkZJRgAB...';
fs.writeFileSync('out.jpg', Buffer.from(b64, 'base64'));
Декодируйте текст Base64 в файл JPEG, используя встроенный в Node Buffer.
Python
import base64
with open('out.jpg', 'wb') as f:
f.write(base64.b64decode('/9j/4AAQSkZJRgAB...'))
Только стандартная библиотека — Base64 → байты JPEG → файл.
PHP
<?php
file_put_contents('out.jpg', base64_decode('/9j/4AAQSkZJRgAB...'));
Однострочник с использованием base64_decode() и file_put_contents().
Shell (macOS / Linux)
echo '/9j/4AAQSkZJRgAB...' | base64 -d > out.jpg
POSIX base64 -d читает строку из stdin и записывает JPEG на диск.
// FAQ — BASE64 В JPG
В: Что такое декодирование Base64 в JPG?
О: Оно обращает Base64-кодированный JPEG обратно в его оригинальную бинарную форму. Декодер читает по 4 ASCII-символа за раз из Base64-строки, ищет их в алфавите RFC 4648 и выводит 3 бинарных байта на группу. Полученный массив байтов — это полный, корректный файл JPEG — те же DCT-коэффициенты, те же таблицы Хаффмана, те же EXIF-метаданные, то же качество, что и до кодирования.
В: Как определить, что Base64-строка действительно JPEG?
О: Каждый JPEG начинается с двух магических байтов FF D8 (Start-Of-Image). Когда эти байты кодируются в Base64, первые 4 символа всегда /9j/. Поэтому любая Base64-строка, начинающаяся с /9j/4AAQ (заголовок JFIF) или /9j/2wC (многие смартфон-камеры, использующие Adobe APP14) — это JPEG. Другие форматы имеют разные префиксы: iVBORw0KGgo для PNG, R0lGOD для GIF, UklGR для WebP.
В: Можно ли декодировать URI данных напрямую?
О: Да. Если ваша строка начинается с data:image/jpeg;base64,, декодер удаляет этот префикс автоматически и обрабатывает полезную нагрузку. Если у вас только сырая Base64-часть, наш инструмент обнаруживает магический номер JPEG (/9j/) и оборачивает декодированные байты как image/jpeg для предпросмотра. Пробелы, переносы строк и табуляции удаляются перед декодированием, поэтому вы можете вставить pretty-printed значение JSON прямо внутрь.
В: Снижает ли декодирование качество моего JPEG?
О: Нет. Декодирование Base64 — это чистое бинарное преобразование: каждый Base64-символ детерминированно отображается в 6 битов, и 4 символа декодируются в 3 байта. Выходящие байты JPEG побитово идентичны тому, что было закодировано, поэтому качество такое же, на каком был сохранён оригинальный JPEG. SHA-256 хэш декодированного файла совпадёт с хэшем оригинала. Если ваше декодированное фото выглядит хуже ожидаемого, потеря качества произошла при первом сохранении JPEG, а не во время кругового пути Base64.
В: Декодированный JPG сломан — что может быть не так?
О: Типичные причины:
• Обрезанная строка — Base64 где-то обрезан. Полный JPEG заканчивается на FF D9 (End-Of-Image), что кодируется в /9k= или 2Q== в Base64. Если ваша строка не заканчивается одним из этих паттернов плюс опциональный padding, она неполна.
• Двойное кодирование — JPEG был Base64-кодирован дважды. Декодируйте ещё раз.
• URL-safe алфавит — если строка использует -_ вместо +/, некоторые декодеры отвергнут её. Наш инструмент нормализует оба.
• На самом деле другой формат — полезная нагрузка PNG или WebP. Используйте наш универсальный декодер Base64 → изображение, который автоопределяет формат.
В: Сохраняются ли мои EXIF-метаданные после декодирования?
О: Да. Сегмент EXIF APP1 (модель камеры, GPS, дата/время, объектив, ISO, баланс белого, ориентация и т.д.) — это часть байтового потока JPEG. Поскольку Base64 побитово обратим, каждый байт — включая EXIF — восстанавливается. Если вам нужны фотографии без EXIF из соображений приватности, удалите метаданные после декодирования с помощью инструмента типа exiftool -all= out.jpg или canvas-based повторного экспорта в браузере.
В: Можно ли декодировать Base64 в JPG в терминале?
О: Да. На macOS и Linux: echo '/9j/4AAQSkZJRgAB…' | base64 -d > out.jpg
(старая macOS base64 использует -D.)
На Windows PowerShell: [IO.File]::WriteAllBytes('out.jpg', [Convert]::FromBase64String('/9j/4AAQSkZJRgAB…'))
Если ваш ввод — полный URI данных, пропустите его через sed 's|^data:.*base64,||' сначала, чтобы удалить префикс.
В: Насколько большой Base64 JPG можно декодировать?
О: До предела памяти вашего браузера. Декодированный JPEG 100 МБ требует ~135 МБ текста Base64, что современные десктопные браузеры обрабатывают без проблем. Мобильные браузеры надёжны до ~40 МБ. Для чрезвычайно больших фотографий (RAW-конвертированные JPEG-экспорты из среднеформатных камер) рассмотрите серверное декодирование: base64 -d photo.b64 > photo.jpg намного быстрее, чем круговой путь в браузере.
В: Работает ли декодер офлайн?
О: Да, после первоначальной загрузки страницы. Всё декодирование использует встроенные API браузера (atob(), Uint8Array, Blob, URL.createObjectURL()), ни один из которых не требует сетевого подключения. Вы можете подтвердить это, отключив сеть и продолжая декодировать — предпросмотр и скачивание продолжают работать.
В: Зашифрован ли или приватен Base64 JPEG?
О: Нет. Base64 — это кодирование, а не шифрование. Любой с вашей Base64-строкой может декодировать её обратно в оригинальное фото за миллисекунды, и EXIF-данные (включая GPS-координаты) идут вместе с ним. Если JPEG содержит чувствительную информацию, зашифруйте её (AES-GCM, age, PGP) перед применением Base64, и всегда передавайте строку только через HTTPS.
В: Декодирование на стороне клиента — что-то загружается?
О: Ничего не загружается. Каждый шаг — удаление префикса, нормализация пробелов, вызов atob(), построение Blob, отрисовка <img>, запуск скачивания — происходит в вашем браузере. Откройте вкладку Network в браузерных dev-tools во время декодирования, и вы увидите ноль исходящих запросов для вашей полезной нагрузки Base64. Этот инструмент безопасен для конфиденциальных скриншотов, личных фотографий и регулируемых данных.
В: Как декодировать Base64 в JPG в продакшн-коде?
О: В Node.js: fs.writeFileSync('out.jpg', Buffer.from(b64, 'base64')). В Python: open('out.jpg','wb').write(base64.b64decode(b64)). В Go: b, _ := base64.StdEncoding.DecodeString(b64); os.WriteFile("out.jpg", b, 0644). В Java: Files.write(Path.of("out.jpg"), Base64.getDecoder().decode(b64)). В Rust: std::fs::write("out.jpg", base64::decode(b64)?)?. В Ruby: File.binwrite('out.jpg', Base64.decode64(b64)). В PHP: file_put_contents('out.jpg', base64_decode($b64)).
В: Base64 в JPG vs Base64 в PNG — что использовать?
О: Посмотрите на префикс Base64-строки. Если она начинается с /9j/, это JPEG — используйте Base64 → JPG. Если она начинается с iVBORw0KGgo, это PNG — используйте Base64 → PNG. Вы не можете принудить декодер JPEG выдавать PNG (или наоборот); магические байты говорят правду. В случае сомнений используйте универсальный декодер, который определяет формат автоматически и сохраняет с правильным расширением.