Если я конвертирую изображение (jpg или png) в base64, оно будет больше или будет такого же размера? Насколько это будет больше?
Рекомендуется ли использовать на моем сайте изображения в кодировке base64?
Если я конвертирую изображение (jpg или png) в base64, оно будет больше или будет такого же размера? Насколько это будет больше?
Рекомендуется ли использовать на моем сайте изображения в кодировке base64?
Ответы:
Будет примерно на 37% больше:
Грубо говоря, окончательный размер двоичных данных в кодировке Base64 в 1,37 раза больше исходного размера данных.
Источник: http://en.wikipedia.org/wiki/Base64
Вот действительно полезный обзор того, когда кодировать base64, а когда нет, от Дэвида Калхуна.
Основной ответ = файлы с кодировкой gzip base64 будут примерно сопоставимы по размеру со стандартным двоичным файлом (jpg / png). Двоичные файлы с Gzip будут иметь меньший размер.
Вывод = есть некоторые преимущества в кодировании и сжатии значков пользовательского интерфейса и т. Д., Но неразумно делать это для изображений большего размера.
В base64 он будет больше.
Base64 использует 6 бит на байт для кодирования данных, тогда как двоичный код использует 8 бит на байт. Кроме того, с Base64 есть небольшие накладные расходы. Не все биты используются с Base64, потому что он был разработан в первую очередь для кодирования двоичных данных в системах, которые могут правильно обрабатывать только недвоичные данные.
Это означает, что закодированное изображение будет примерно на 25% больше, плюс постоянные накладные расходы на заполнение.
Кодирование изображения в base64 увеличивает его примерно на 30%.
См. Подробности в статье в Википедии о схеме URI данных , где говорится:
URI данных в кодировке Base64 на 1/3 больше, чем их двоичный эквивалент. (Однако эти накладные расходы сокращаются до 2-3%, если HTTP-сервер сжимает ответ с помощью gzip)
Ответ: это зависит от обстоятельств.
Хотя изображения base64 больше, есть несколько условий, когда base64 является лучшим выбором.
Размер base64-изображения
Base64 использует 64 разных символа, а это 2 ^ 6. Таким образом, base64 хранит 6 бит на 8-битный символ. Таким образом, соотношение непреобразованных данных к данным base64 составляет 6/8. Это не точный расчет, а приблизительная оценка.
Пример:
Для изображения размером 48 КБ требуется около 64 КБ в качестве преобразованного в base64 изображения.
Расчет: (48/6) * 8 = 64
Простой калькулятор CLI в системах Linux:
$ cat /dev/urandom|head -c 48000|base64|wc -c
64843
Или используя изображение:
$ cat my.png|base64|wc -c
Base64-изображения и веб-сайты
На этот вопрос ответить гораздо сложнее. Вообще говоря, чем больше изображение, тем меньше смысла использовать base64. Но учтите следующие моменты:
Это определенно будет стоить вам больше места и пропускной способности, если вы хотите использовать изображения в кодировке base64. Однако, если на вашем сайте много маленьких изображений, вы можете уменьшить время загрузки страницы, кодируя изображения в base64 и помещая их в HTML. Таким образом, клиентскому браузеру не нужно будет много подключаться к изображениям, но они будут в формате html.