base64 закодированный размер изображения


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

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

6 65

6 ответов:

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

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

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

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

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

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

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

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

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

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

подробнее в статье Википедии о схема URI данных, где говорится:

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

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

размер base64-images

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

пример:

изображение 48kb требует около 64kb как 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-файл могут иметь похожие строки. Для PNGs вы часто находите повторяющиеся символы "A". Используя gzip (иногда называемый "deflate"), может быть будь даже выигрыш по размеру. Но это зависит от содержания изображения.
  • запрос накладных расходов HTTP1.1: особенно с большим количеством файлов cookie вы можете легко иметь несколько килобайт накладных расходов на запрос. Встраивание изображений base64 может сохранить полосу пропускания.
  • не base64 кодировать изображения SVG, потому что gzip является более эффективной, чем на XML в кодировке base64.
  • программирование: на динамически генерируемых изображениях легче доставить их в одном запросе, так как координировать два зависимых запросы.
  • Deeplinks: если вы хотите предотвратить загрузку изображения, это немного сложнее, чтобы извлечь изображение из HTML-страницы.

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