Кодувати зображення у Base64 / Data URI
- Панель керування
- Документація
- API
Формат файлу
Ви можете завантажити необмежену кількість зображень максимальним розміром 20M.
Безпека
Ваші дані не зберігаються на наших серверах.
Підтримувані браузери
Усі сучасні браузери підтримуються. Якщо ви виявили помилку, повідомте нам для виправлення.
Що таке Data URI?
Data URI - це URL, який містить безпосередньо дані ресурсу замість того, щоб вказувати на віддалений файл. Його загальна форма data:[<mediatype>][;base64],<data>. Для зображення зазвичай маємо data:image/png;base64,iVBORw0KGgo…. Ресурс вбудований у HTML, CSS або JSON і завантажується без будь-якого додаткового HTTP-запиту.
Навіщо кодувати зображення у Base64?
Поширені причини:
- Зменшити HTTP-запити: вбудувати іконку безпосередньо у CSS замість її окремого завантаження
- Підпис email з вбудованим зображенням: без ризику блокування зображення як зовнішнього вмісту
- Web Components / Web Workers: де завантаження зовнішнього ресурсу часто викликає проблеми scope або CORS
- Локальне сховище (LocalStorage, IndexedDB, база даних): серіалізація мініатюри аватара у рядок
- Self-contained snippets: HTML-файл, що не потребує зовнішніх залежностей
Типові випадки використання
Кілька конкретних контекстів, де кодування Base64 зображення виправдане:
- Вбудовані SVG іконки у CSS (
background-image: url("data:image/svg+xml;base64,…")) - Персоналізовані підписи email з логотипом
- Швидке прототипування автономної сторінки, яка поширюється електронною поштою
- Автономні веб-компоненти (один файл для розгортання)
- Генерація PDF на стороні браузера (jsPDF) з вбудованими мініатюрами
- Тестові дані (mocks), що містять зображення
Як ним користуватися
Три кроки:
- Завантажте своє зображення (PNG, JPG, SVG, WebP, GIF) через зону завантаження
- Натисніть "Кодувати"
- Скопіюйте результуючий Data URI за допомогою відповідної кнопки та вставте у ваш HTML, CSS або JSON
Обмеження та найкращі практики
Base64 не є чарівним рішенням. Кілька застережень:
- Base64 збільшує розмір приблизно на 33%: 4 ASCII символи для кожних 3 бінарних байт
- Закодовані зображення не кешуються окремо браузером; вони перезавантажуються з HTML/CSS, що їх містить
- Надавайте перевагу для зображень менше 10 КБ; понад цього розміру зовнішній файл зазвичай ефективніший
- Для SVG надавайте перевагу URL-кодуванню (через
encodeURIComponent) а не Base64: результат коротший і залишається парсабельним як текст - Сучасні інструменти збірки (Webpack, Vite) автоматизують вибір Base64 проти зовнішнього файлу через налаштовуваний поріг розміру
Конкретні приклади
HTML:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNgYAAAAAMAAS+rJYwAAAAASUVORK5CYII=" alt="pixel">
CSS:
.icon {
background: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0i…") no-repeat;
width: 16px;
height: 16px;
}
JSON (mock data):
{
"user": {
"name": "Adrien",
"avatar": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEA…"
}
}
FAQ
В чому різниця між Base64 і бінарним?
Бінарний представляє сирі байти файлу. Base64 - це кодування, яке перетворює ці байти у 64 друкованих ASCII символи (A-Z, a-z, 0-9, +, /). Текстові контексти (HTML, JSON, email) не можуть переносити бінарні дані; Base64 вирішує цю проблему ціною збільшення розміру на 33%.
Чому мій Data URI такий довгий?
Зображення розміром 30 КБ у бінарному форматі стає ~40 КБ у Base64. І кожен символ - це ASCII байт, тому так, рядок довгий. Це невід'ємна властивість кодування. Для великих зображень зберігайте зовнішній файл.
Чи підтримують усі браузери Data URI?
Так, без винятків серед сучасних браузерів (Chrome, Firefox, Safari, Edge навіть з IE8). Історичні обмеження: IE8 мав максимум 32 КБ. Сьогодні немає проблем у вебі.
Як декодувати Data URI?
Наш декодер зображень Base64 виконує зворотну операцію: вставте ваш Data URI, отримайте файл зображення (PNG, JPG, SVG, WebP) готовий для завантаження або збереження.
Base64 проти URL-кодування для SVG?
Для SVG URL-кодування (через encodeURIComponent) дає коротший рядок, ніж Base64, і залишається читабельним як текст. Це рекомендований вибір у CSS при вбудовуванні SVG inline. Для бінарних форматів (PNG, JPG) Base64 залишається обов'язковим.
Чи впливає кодування Base64 на якість зображення?
Ні. Кодування є lossless: це побієкція бінарний байт ↔ рядок Base64. Оригінальні пікселі суворо зберігаються. Лише розмір файлу, що транспортується, збільшується на 33%.
Часті запитання
Коли краще уникати Data URI?
Як тільки зображення перевищує десяток кілобайт і може повторно використовуватися на кількох сторінках, зовнішній файл є кращим. Тоді браузер може кешувати його окремо від HTML, який на нього посилається. Data URI подовжує основний документ і змушує перезавантажувати зображення при кожному завантаженні сторінки.
Чи надсилається моє зображення на сервер?
Зображення проходить через наш сервер під час кодування і не зберігається після повернення результату. Жодний сторонній сервіс не залучається. Для суворо конфіденційного файлу локальний еквівалент - base64 -w 0 my-image.png на Linux або certutil -encode під Windows.
Чому надавати перевагу URL-кодуванню а не base64 для SVG?
SVG - це XML-текст. Закодований у base64, він стає нечитабельним і приблизно на 33% більшим. У URL-кодуванні через encodeURIComponent, результат залишається читабельним і коротшим. У CSS написати url("data:image/svg+xml;utf8,<svg…>") з екранованими спеціальними символами дає менший кінцевий файл, ніж версія base64.
Який максимальний розмір можна кодувати?
Розмір файлу, прийнятий формою, обмежений кількома мегабайтами, достатньо для переважної більшості іконок, мініатюр і аватарів. Понад цього розміру ви виходите за межі розумного використання: краще використовувати зовнішній файл, що обслуговується CDN.
Чому браузер не кешує Data URI?
HTTP-кеш працює за URL. Data URI є частиною документа, що його містить, тому він перезавантажується разом з ним. Зовнішня іконка в icon.png, навпаки, кешується раз і назавжди та повторно використовується на всіх сторінках, що на неї посилаються. Саме тому Data URI залишається нішевим інструментом, а не загальною заміною.
Приклад запиту
curl -X POST https://cdrn.fr/api/v1/tools/base64-image-encoder/execute \
-F "file=@/path/to/file"
Схема вхідних даних
| Поле | Тип | Обов'язкове | За замовчуванням |
|---|---|---|---|
file |
file | ✓ | – |
цей інструмент очікує файл - використовуйте Content-Type multipart/form-data замість application/json
Точки доступу
GET https://cdrn.fr/api/v1/tools- перелічує всі доступні інструментиGET https://cdrn.fr/api/v1/tools/base64-image-encoder- отримує схему цього інструментуPOST https://cdrn.fr/api/v1/tools/base64-image-encoder/execute- виконує цей інструмент з JSON-payload