Як працює конвертація зображення в Base64
Вся конвертація виконується у браузері за допомогою File API та вбудованої функції btoa — жодна бібліотека кодеків не завантажується, і жоден сервер не бачить зображення. Ось весь процес від початку до кінця:
- Ви перетягуєте або вибираєте зображення. Браузер читає його як Blob з локального диска, жодного разу не копіюючи байти на сервер.
- Файл зчитується шматками по 1 МБ, байти кожного шматка додаються до бінарного рядка. Такий підхід не дає великим зображенням переповнити стек викликів JavaScript.
- Бінарний рядок передається у btoa, яка відображає кожні три байти на чотири символи Base64 з алфавіту A–Z, a–z, 0–9, плюс /.
- MIME-тип файлу (image/png, image/jpeg тощо) читається з об'єкта File і додається на початку як префікс data:, формуючи повний URI виду data:image/…;base64,….
- Сторінка збирає чотири результати з цього URI — повний Data URI, сирий Base64 без префікса, готовий до вставки тег
і фрагмент CSS background-image — кожен із власною кнопкою копіювання.
Навіщо кодувати зображення як Data URI?
- Вбудовування невеликого логотипу або іконки як Data URI прибирає окремий мережевий запит, тому сторінка або лист відображають перший кадр трохи швидше.
- Сторінка або таблиця стилів із вбудованими зображеннями є самодостатньою. Вона працює офлайн, і її можна переносити без окремої папки з ресурсами.
- Багато поштових клієнтів типово блокують зовнішні зображення. Вбудуйте логотип як Base64 — і він з'явиться одразу при відкритті листа, без зовнішнього запиту.
- Кодування відбувається повністю у браузері, тому чутливі зображення ніколи не потрапляють на сторонній сервер. Це стосується скриншотів, сканів документів і внутрішніх схем.
Типові сценарії використання Base64-зображень
Data URI застосовується скрізь, де зображення достатньо мале, щоб окремий запит коштував дорожче, ніж ~33% роздуття від Base64. Три паттерни трапляються постійно:
- Вбудовані CSS-іконки: спрайт або іконка 1–2 КБ, додана до таблиці стилів як background-image: url(data:…), щоб правило було повністю самодостатнім.
- Підписи та розсилки: логотип, вбудований як
з data URI src, відображається навіть коли клієнт блокує зовнішні зображення.
- Вбудовування у збирачах: бандлери Webpack і Vite автоматично вбудовують ресурси нижче порогового розміру, а цей інструмент дає змогу подивитися, як саме виглядає результат.
Як виглядає Base64-зображення?
Візьмемо крихітний прозорий PNG розміром 1×1 піксель. Його необроблені байти займають лише 67 байт, але в кодованому вигляді це рядок iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+M8AAAMEAYC0aGgAAAAASUVORK5CYII=, а повний Data URI виглядає як data:image/png;base64,iVBORw0KGgo…. Зверніть увагу: закодована форма приблизно на третину більша за оригінал. Це і є компроміс за можливість вбудовувати бінарні дані прямо в текст.
Чи завантажується моє зображення кудись?
Ні. Конвертація використовує File API браузера та нативну функцію btoa для кодування зображення повністю на вашому пристрої. Переконайтеся самостійно: відкрийте інструменти розробника, перейдіть на вкладку «Мережа» і сконвертуйте зображення — ви побачите лише запити завантаження сторінки та можливо реклами. Нічого схожого на зображення не надсилається на сервер, що робить інструмент безпечним для скриншотів, документів і внутрішніх схем.
Чому Base64-результат більший за вихідне зображення?
Base64 представляє кожні три байти бінарних даних чотирма ASCII-символами, тому закодований текст приблизно на 33% більший за вихідний файл. Індикатор розміру Data URI на цій сторінці показує точний збільшений розмір. Саме тому Data URI доречні лише для невеликих зображень — вбудовування фото 2 МБ роздме ваш HTML або CSS значно більше, ніж обійшовся б окремий запит. Практичне правило: вбудовуйте зображення до ~4 КБ, а для всього більшого використовуйте посилання.
Які формати зображень можна конвертувати?
Працює будь-який формат, який браузер розпізнає як зображення, оскільки інструмент читає сирі байти, а не декодує картинку. Це PNG, JPEG, GIF, WebP, SVG і BMP. MIME-тип читається безпосередньо з файлу, тому префікс data: завжди відповідає реальному формату — JPEG дає data:image/jpeg, а SVG — data:image/svg+xml. SVG заслуговує окремої примітки: він уже є текстом, тому для SVG URL-encoded Data URI часто менший за версію Base64, хоча цей інструмент видає форму Base64 для однорідності.
Скиньте зображення, скопіюйте Data URI або потрібний фрагмент і вставте в HTML, CSS або шаблон листа. Кожен байт залишається на вашому пристрої. Без завантаження на сервер, без реєстрації, без серверних запитів.