Формат webp более эффективен, чем JPEG?

Я пытаюсь сжать и изменить размер фотографий зеркальной камеры. Но до сих пор я наблюдал, что качество webp заметно ухудшается, когда размер файла webp примерно на 30% меньше, чем у JPEG.

Команда, используемая для генерации webp с помощью imagemagick:

convert 1.JPG -strip -quality 80 -resize 800 -define webp: method = 6 1.webp

Моя цель - получить формат webp с размером файла не менее чем на 20% меньше, чем у JPEG, при этом практически не имея разницы в качестве между JPEG и webp. Это достижимо или опять же, бесплатного обеда не существует?


person ace    schedule 12.04.2019    source источник


Ответы (4)


Обновление. Со времени первоначальной публикации я обнаружил, что использование Компрессор Google cwebp показывает значительно улучшенное сжатие по сравнению с ImageMagik 6.7.8, что и послужило основой для моих первоначальных тестов. Это особенно верно для изображений с прозрачностью по сравнению с PNG. Файлы, использующие версию команды webp для Mac (которая использует cwebp под капотом), составляют примерно 1/4 размера того же файла, сжатого с помощью ImageMagik, и обеспечивают значительное повышение производительности.


Согласно Google, «WebP обычно обеспечивает сжатие в среднем на 30% больше, чем JPG» (источник) с визуальным качеством, аналогичным JPG. Однако, как вы предполагаете, бесплатного обеда не бывает никогда.

Качество Качество - это в значительной степени субъективная мера, но имейте в виду, что вы сравниваете файл, сжатый с качеством 80, с файлом, у которого нет такого уровня сжатия (по крайней мере, это то, что я понял из вашего вопроса). Простое выполнение преобразования по умолчанию без указания более низкого качества может дать вам файлы немного меньшего размера без потери видимого качества. Хотя на 20% меньше - это может показаться непростой задачей, но для некоторых изображений это достижимо.

convert 1.JPG 1.webp # do not specify quality

Размер На практике он во многом зависит от ваших настроек и исходных изображений. Например, я недавно запустил эту команду для всех изображений jpg в папке на веб-сайте «в дикой природе»:

convert filename.jpg -quality 80 -strip -define webp:lossless=false -define webp:method=6 filename.webp

Команда convert на этом конкретном сервере поддерживается ImageMagick 6.7.8. Некоторые файлы были значительно меньше по сравнению с исходными JPG, в то время как другие были действительно больше. В целом после выполнения этой команды общий размер файлов всех изображений JPG составил 49 МБ, в то время как общий размер файлов всех изображений WebP составил 29 МБ. Это неплохая экономия, однако, когда я запустил сжатие JPG ImageMagick, оно было даже лучше:

convert filename.jpg -sampling-factor 4:2:0 -strip -quality 80 -interlace JPEG filename-new.jpg;

Размер всех новых файлов в каталоге был 21 МБ. Для обоих установлено качество сжатия 80, но сжатие jpg кажется лучше. Возможно, это связано с некоторым сжатием уже на моем наборе тестовых изображений и тем, как это взаимодействует с процессом преобразования WebP.

Как я обнаружил, размеры файлов могут даже увеличиваться, обычно если вы конвертируете между изображениями с потерями и без потерь. На странице часто задаваемых вопросов, указанной выше, Google утверждает: «Это в основном из-за разницы в цветовом пространстве (YUV420 против ARGB) и их преобразования».

tl; dr: В общем, он может улучшить или не улучшить размер файла в зависимости от типа изображений, того, был ли / как был сжат исходный файл, и какое качество вы установили для WebP. Видимое ухудшение качества измерить сложнее, но попробуйте установить более высокое качество или вообще не указывать качество.

person Pwpwpw    schedule 15.05.2019
comment
По крайней мере, ImageMagick 7.0.10 дает точно такие же файлы, что и cwebp, при выполнении с теми же параметрами. Это не должно вызывать удивления, поскольку оба используют libwebp. Если у кого-то есть большие различия между imagemagick и cwebp, я бы дважды проверил настройки. Я подозреваю, что в webp на вашем Mac были изменены некоторые настройки по умолчанию. - person Krzysiek; 05.06.2021

Просто чтобы добавить побочный комментарий к отличному ответу @ Pwpwpw, webp - хорошая замена PNG, но не очень хорошая замена JPG.

Он превосходит PNG, потому что у него лучший алгоритм сжатия без потерь, чем у libpng, и у него есть замечательная функция, позволяющая использовать разные настройки сжатия для разных каналов. Например, вы можете использовать альфа-канал без потерь, но с потерями в RGB, что отлично подходит для наложений.

По сравнению с JPG дела обстоят хуже. Он использует кодек VP8 с потерями, который лишь немного лучше, чем JPG.

Я бы посмотрел на HEIC. Он использует гораздо более современный h.265 для сжатия с потерями и обычно превосходит JPG в два раза при том же качестве. Это формат, который Apple сейчас использует по умолчанию в iOS.

libheif здесь есть хорошая демонстрация:

https://strukturag.github.io/libheif/

Это libheif, скомпилированный в javascript и работающий в вашем браузере. Вы можете загрузить в него .heic и скачать как jpg. В libheif есть несколько основных инструментов командной строки для кодирования и декодирования изображений.

К сожалению, у него есть некоторые проблемы с патентами, возможно, вам нужно быть немного осторожнее.

update. Если заглянуть дальше, то сейчас мы надеемся на AVIF: это тот же формат контейнера, что и HEIC (он называется HEIF, что сбивает с толку), но заменяет проблемный компрессор h.265 на AV1. AV1 примерно эквивалентен h.265, но не содержит патентов.

person jcupitt    schedule 16.05.2019
comment
как HEIF по сравнению с WEBP? - person Antonin GAVREL; 03.06.2020
comment
WEBP и JPEG в целом похожи для изображений с потерями. Изображения HEIC примерно вдвое меньше. AVIF - перспективный беспатентный конкурент HEIC. - person jcupitt; 03.06.2020
comment
В моих текущих тестах, когда я пытался переключиться с .jpg на .avif, результаты были весьма разочаровывающими или минимальными. Я хотел чего-то более радикального, вроде .tar.gz и .tar.xz (я знаю, нельзя сравнивать 1: 1, но вы понимаете точку зрения, исходящую из минимизации требований к хранилищу здесь). - person shevy; 23.02.2021
comment
Попробуйте: $ vips copy k2.jpg x.avif[Q=30,compression=av1]; ls -l k2.jpg x.avif с фото. Я вижу, например. 270k для jpg и 120k для avif, и они визуально очень близки. - person jcupitt; 24.02.2021

Только что провел быстрый тест с преобразованием JPG высокого разрешения с моей зеркальной камеры в фоновое изображение 410x800 для мобильных устройств с помощью Photoshop CC 2020 (и плагина WebPShop).

Без потерь:

  • PNG 100%: 680 КБ
  • JPG 12 (макс.): 428 КБ
  • WEBP 100%: 537 КБ

50% качество:

  • JPG 6 (50%): 119 КБ
  • WEBP 50%: 45 КБ

На 50% в JPG больше деталей, но качество вполне сопоставимо.

0 качество:

  • JPG 0 (мин.): 51 КБ
  • WEBP 0%: 6 КБ

При 0% WEBP - это ужасно. Но представьте себе JPG самого низкого качества, и это плохое качество изображения, и WEBP определенно превосходит его на 50%, при этом имея меньший размер файла. Так что для меня это бесплатный обед.

person Pascal Gerritsen    schedule 24.03.2020
comment
Меня это все еще очень разочаровывает; У меня тоже много файлов меньшего размера .jpg, так что помещать их в .avif не стоит. Возможно, для больших изображений это может быть полезно, но в настоящее время я очень разочарован, учитывая, сколько .avif продвигается на www, но результаты не так уж и хороши ... да, лучше, чем jpg, но это далеко не так, как, Скажем, вы выиграли в сегменте видео с 1995 по 2020 год, просто для сравнения. - person shevy; 23.02.2021

Вы перекодируете сжатый jpeg с потерями; если у вас есть доступ к исходным необработанным файлам, вы должны использовать их в качестве основных. В настоящее время вы сжимаете шум (и другие артефакты), создаваемый кодировщиком jpeg, поэтому кодек WebP не имеет доступа к той же информации, которая уже была потеряна при кодировании jpeg. Конечно будет хуже.

Другими словами; по возможности следует кодировать исходные данные изображения. Я знаю, что некоторые камеры и оборудование выводят только HEIC / JPEG, а не RAW, поэтому у вас может быть нечего делать - лучше всего сохранить JPEG в формате JPEG.

person t0rakka    schedule 28.08.2019
comment
Думаю, это хороший ответ, поэтому для исходных необработанных изображений преобразование в форматы .avif или webp лучше, чем в старые .jpg. Я думал, что даже преобразование .jpg, которые уже были сжаты, в .avif, даст полезные результаты, но у меня даже есть изображения, которые больше в .avif, так что это было очень разочаровывающим. :( Полагаю, это показывает, что самый важный шаг - это тот, на котором вы решаете, как сэкономить файловое пространство, сохраняя при этом исходное большое (r) изображение. - person shevy; 23.02.2021