Подтвердить что ты не робот

Каков эффект кодирования изображения в base64?

Если я конвертирую изображение (jpg или png) в base64, то оно будет больше или оно будет иметь одинаковый размер? Насколько это будет больше?

Рекомендуется ли использовать кодированные изображения base64 на моем веб-сайте?

4b9b3361

Ответ 1

Он будет примерно на 37% больше:

Очень грубо, конечный размер двоичных данных с кодировкой Base64 равен 1,37 раза по сравнению с исходным размером данных

Источник: http://en.wikipedia.org/wiki/Base64

Ответ 2

Здесь действительно полезный обзор того, когда кодировать base64 и когда не от Дэвида Калхауна.

Основной ответ= gzipped base64 закодированные файлы будут примерно сопоставимы по размеру файла со стандартным двоичным (jpg/png). Бинарные файлы Gzip'd будут иметь меньший размер файла.

Takeaway= Есть некоторые преимущества для кодирования и gzipping ваших значков пользовательского интерфейса и т.д., но неразумно делать это для больших изображений.

Ответ 3

Он будет больше в base64.

Base64 использует 6 бит на каждый байт для кодирования данных, тогда как двоичный код использует 8 бит на байт. Кроме того, на Base64 имеется небольшая надбавка. Не все биты используются с Base64, поскольку он был разработан, в первую очередь, для кодирования двоичных данных в системах, которые могут корректно обрабатывать не двоичные данные.

Это означает, что кодированное изображение будет примерно на 25% больше, плюс постоянные накладные расходы для заполнения.

Ответ 4

Кодирование изображения на base64 сделает его примерно на 30% больше.

См. подробности в статье wikipedia о схеме URI данных, где указано:

URI с кодировкой Base64 имеют размер на 1/3 больше, чем их двоичный эквивалент. (Однако эти служебные данные сокращаются до 2-3%, если HTTP-сервер сжимает ответ с помощью gzip)

Ответ 5

Размер base64-изображений

Base64 использует 64 разных символа, и это 2 ^ 6. Таким образом, base64 хранит 6 бит на 8-битный символ. Таким образом, доля составляет 6/8 от необработанных данных до данных base64. Это не точный расчет, а приблизительная оценка.

Пример:

Для изображения размером 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. Но рассмотрим следующие моменты:

  • Многие встроенные изображения в HTML файле или CSS файле могут иметь похожие строки. Для PNG вы часто найдете повторяющиеся символы "A". Используя gzip (иногда называемый "deflate" ), может быть даже выигрыш по размеру. Но это зависит от содержания изображения.
  • Запросить накладные расходы HTTP1.1: особенно с большим количеством файлов cookie вы можете легко получить несколько килобайт накладных расходов по запросу. Вложение изображений base64 может сэкономить полосу пропускания.
  • Не кодируйте изображения SVG base64, потому что gzip более эффективен в XML, чем на base64.
  • Программирование. На динамически сгенерированных изображениях проще доставлять их по одному запросу для координации двух зависимых запросов.
  • Deeplinks: если вы хотите предотвратить загрузку изображения, немного сложнее извлечь изображение с HTML-страницы.

Итак, ответ: это зависит.

Ответ 6

Это будет стоить вам больше места и пропускной способности, если вы хотите использовать изображения с кодировкой base64. Однако, если на вашем сайте много мелких изображений, вы можете уменьшить время загрузки страницы, закодировав изображения на base64 и разместив их в html. Таким образом, браузеру клиента не нужно будет делать много подключений к изображениям, но будет иметь их в html.