1K подписчиков

Вектор? Растр? Почему не оба?

Источник: WebForMyself.com На этой неделе я столкнулся с интересным классом задач, для  которых, оглядываясь назад, можно было бы найти гораздо лучшее решение.  Существует ли оно?

Источник: WebForMyself.com

На этой неделе я столкнулся с интересным классом задач, для которых, оглядываясь назад, можно было бы найти гораздо лучшее решение. Существует ли оно?

Проблема связана с hero-изображением в правой части домашней страницы jamstackconf.com. Мы работаем с Figma в маркетинговой команде Netlify, и моя первая попытка экспортировать такое изображение была связана с проблемами.

Источник: WebForMyself.com На этой неделе я столкнулся с интересным классом задач, для  которых, оглядываясь назад, можно было бы найти гораздо лучшее решение.  Существует ли оно?-2

Попытка 1: SVG

  • 10.1 MB Оригинальный экспорт из Figma в формате SVG
  • 9.9 MB оптимизированный SVG с помощью SVGOMG

Теперь я знаю, что эти размеры являются размерами несжатых файлов (до GZIP / Brotli), но я думаю, что вы согласиться с тем, что даже оптимизированные 9,9 МБ — это слишком плохо даже для различных алгоритмов сжатия (9,9 МБ сжимается до 7,36 МБ) . Внутри SVG слишком много встроенных растровых изображений, чтобы получить хорошие результаты. Давайте переключимся на растр и посмотрим, как далеко мы можем зайти.

Попытка 2: PNG

1.2 MB Оригинальный экспорт из Figma в PNG.

Я не стал помещать главное изображение размером 1,2 МБ на главную область области просмотра. Давайте попробуем сделать некоторые базовые оптимизации. Здесь важно отметить, что нам нужно сохранить прозрачность изображения. Если цвет фона изменится, я не хочу повторно оптимизировать изображение. Это исключает преобразование в JPEG.

Источник: WebForMyself.com На этой неделе я столкнулся с интересным классом задач, для  которых, оглядываясь назад, можно было бы найти гораздо лучшее решение.  Существует ли оно?-3

IMAGEOPTIM

831 KB оптимизированный PNG с помощью ImageOptim.
831 KB оптимизированный PNG с помощью ImageOptim.

Меня впечатлила экономия ~ 400 КБ за счет одного перетаскивания в ImageOptim, но 831 все еще слишком много.

SQUOOSH

376 KB оптимизированный PNG с помощью Squoosh (уменьшенная палитра до 256 цветов).
376 KB оптимизированный PNG с помощью Squoosh (уменьшенная палитра до 256 цветов).

Вариант с уменьшенной палитрой дает огромную экономию! Я немного поигрался с настройками формата AVIF в Squoosh, но не смог превзойти размер файла PNG. (Обновление от 27 августа: обратите внимание на раздел «Попытка 4: AVIF» ниже).

Попытка 3: WEBP

152 KB оптимизированный WebP с помощью Squoosh (без потерь, уменьшенная палитра до 256 цветов, демонстрация предлагает резервный PNG).
152 KB оптимизированный WebP с помощью Squoosh (без потерь, уменьшенная палитра до 256 цветов, демонстрация предлагает резервный PNG).

Вау, это действительно отличная экономия размера файла! Мы будем использовать <picture> для постепенного преобразования нашего PNG в WebP. Многие могут посчитать это «достаточно хорошим результатом», но вся суть этого блога – в последнем трюке.

Попытка 4: AVIF

Джейк Арчибальд дал хороший совет снова попробовать формат AVIF (в режиме Lossy) без уменьшения цветовой палитры. Я думаю, это была хорошая подсказка! Уменьшенные параметры палитры сказались на изображении. Моя неофициальная цель здесь заключалась в том, чтобы получить как можно больше качества из формата AVIF при таком же размере файла, как и в версии с уменьшенной палитрой WebP.

Настройки Squoosh: Lossless (выкл.), Качество: 45, Subsample Chroma (выкл.), Effort: 6.

Источник: WebForMyself.com На этой неделе я столкнулся с интересным классом задач, для  которых, оглядываясь назад, можно было бы найти гораздо лучшее решение.  Существует ли оно?-7

Вариант победитель: два отдельных слоя: SVG + AVIF / WEBP / PNG

Если мы отделим элементы, в которых хорошо работают векторы (градиенты, линии и т. д.), и поместим их в SVG, а остальное поместим в растровый формат, мы сможем добиться еще большей экономии! Я выбрал легкий путь — я не вложил столько в векторный слой, сколько мог бы.

Источник: WebForMyself.com На этой неделе я столкнулся с интересным классом задач, для  которых, оглядываясь назад, можно было бы найти гораздо лучшее решение.  Существует ли оно?-8
Источник: WebForMyself.com На этой неделе я столкнулся с интересным классом задач, для  которых, оглядываясь назад, можно было бы найти гораздо лучшее решение.  Существует ли оно?-9

Используя растровый слой в качестве изображения переднего плана и дополнительное векторное изображение в качестве CSS background-изображения, мы можем объединить их! Вы даже можете сбросить оптимизированный растр обратно в SVG в виде URI встроенного в <image>, если хотите, но я не пошел по этому пути.

Источник: WebForMyself.com На этой неделе я столкнулся с интересным классом задач, для  которых, оглядываясь назад, можно было бы найти гораздо лучшее решение.  Существует ли оно?-10

Окончательные результаты

От 10,06 МБ до 78 КБ — экономия 9,9 МБ. Неплохо.

Источник: WebForMyself.com На этой неделе я столкнулся с интересным классом задач, для  которых, оглядываясь назад, можно было бы найти гораздо лучшее решение.  Существует ли оно?-11

Читайте нас в Telegram, VK

Источник: www.zachleat.com