Перейти к содержимому
PulsarKit

Конвертировать изображение в Base64

Конвертируйте изображение в строку Base64 или data URI для CSS, HTML или JSON — или вставьте строку Base64, чтобы вернуть файл изображения.

Перетащите файлы сюда

.jpg, .jpeg, .png, .gif, .webp, .svg, .bmp, .avif, .ico, .txt · до 10 МБ

Направление
Больше настроек

Как конвертировать изображение в Base64

  1. 1

    Перетащите изображение или вставьте строку Base64

    Добавьте до двадцати изображений для кодирования или поменяйте направление и вставьте уже готовую строку. Подойдет и файл .txt, в котором лежит эта строка.

  2. 2

    Выберите направление

    При кодировании вы получаете data URI или чистый Base64-поток. При декодировании — скачиваемый файл изображения с правильным расширением.

  3. 3

    Скопируйте строку или скачайте файл

    Скопируйте результат прямо в таблицу стилей или сохраните декодированное изображение. Пакет изображений скачивается как ZIP с отдельным текстовым файлом для каждого и общим JSON.

Как работает Base64

Base64 ничего не сжимает и не конвертирует. Он записывает те же байты 64 символами, которые без потерь переживают вставку в текст. Три байта превращаются в четыре символа, поэтому результат всегда примерно на треть больше исходного файла. Смысл не в размере, а в размещении: data URI можно прописать прямо в таблицу стилей, атрибут HTML или поле JSON. Это те места, где ссылка на отдельный файл была бы неудобна или невозможна.

Data URI или чистый Base64-поток

Data URI — это полная строка, которая начинается с data:image/png;base64. Именно ее браузер ожидает увидеть в CSS-фоне или в атрибуте img src. Чистый поток — все, что идет после запятой. Его обычно ждут поля API или столбцы в базе данных, потому что тип там хранится отдельно. И то и другое получается из одних и тех же байтов, поэтому между форматами можно переключаться без повторного перекодирования.

Тип берется из байтов

MIME-тип, который попадает в data URI, определяется по первым двенадцати байтам файла, а не по его имени. Поэтому PNG, который кто-то переименовал в .jpg, все равно выходит как data:image/png. Это важно: браузер откажется показывать data URI, у которого указанный тип не совпадает с содержимым. Сломанной в таком случае выглядит страница, а не сам файл. SVG — исключение, это текстовый формат. Он определяется по открывающему тегу, а не по бинарной сигнатуре.

Декодирование обратно в файл

Вставляйте любой вариант: полный data URI, голый поток или строку с переводами строк. Пробелы и разрывы удаляются, алфавит проверяется до декодирования. Поэтому обрезанная при вставке строка сразу даст ошибку, а не битый файл. Получившиеся байты сверяются с той же таблицей сигнатур, чтобы подобрать расширение. Если байты не похожи ни на один известный формат, откроется список форматов, где можно указать нужный.

Ничего никуда не отправляется

При кодировании используется встроенный FileReader браузера, при декодировании — его функция atob. Без библиотек, без загрузки на сервер. Все, что вы вставляете в поле, остается в этой вкладке. Это важно, когда в строке лежит не логотип, а приватный документ.

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

Зачем конвертировать изображение в Base64?

Чтобы встраивать его напрямую, а не ссылаться на него. Маленькая иконка, вставленная в CSS, экономит HTTP-запрос. Изображение в JSON проходит через API, который пропускает только текст. Email-шаблон несет свою графику с собой, без внешних ссылок, которые почтовый клиент может заблокировать.

Насколько больше становится файл?

Примерно на 33–37 процентов. Base64 тратит четыре символа на каждые три байта плюс короткий префикс для data URI. Фото размером 100 КБ превращается примерно в строку на 133 КБ, поэтому встраивать обычно имеет смысл иконки, а не фотографии.

В чем разница между data URI и обычным Base64?

Data URI — это вся конструкция целиком: data:image/png;base64, а затем полезная нагрузка. Браузер использует ее сразу как источник изображения. Обычный Base64 — только полезная нагрузка, без информации о типе. Именно такой вариант ожидают большинство API и полей базы данных.

Есть ли ограничение длины этих строк в браузерах?

Браузеры переваривают data URI размером в несколько мегабайт в CSS и HTML. Редакторы, терминалы и diff-инструменты становятся неудобными задолго до этого. Этот инструмент принимает файлы до 10 МБ (строка получится около 13,3 МБ) и декодирует строки размером до 14 МБ.

Как декодировать строку без префикса data:?

Вставьте ее и оставьте тип изображения в режиме автоматического определения. Декодированные байты проверяются по той же таблице сигнатур, что и при кодировании, поэтому PNG узнается по заголовку 89 50 4E 47 независимо от префикса. Если определить тип не удалось, выберите его в списке сами.

Безопасно ли вставлять сюда чужой Base64?

Строка декодируется в байты и показывается как предпросмотр изображения в вашей вкладке. Она не загружается на сервер, не выполняется и не сохраняется. Декодирование — это арифметика, и больше ничего. Но надежность полученных байтов зависит только от источника. Относитесь к неожиданному результату так же осторожно, как к любому скачанному файлу.

Почему декодирование иногда не срабатывает?

Почти всегда потому, что строка неполная. Вставка, обрезанная в середине, строка, потерянная при копировании из терминала, или URL-совместимый вариант с дефисом и подчеркиванием вместо плюса и слеша — все это не пройдет проверку алфавита. Обычно помогает еще раз скопировать строку оттуда, где она лежит.

Похожие инструменты