Прогрессивный jpeg против базового jpeg

У меня есть веб-галерея, где я отображаю изображения, которые различаются по размеру файла и разрешению, загруженному пользователями. В настоящее время все изображения являются базовыми. Поэтому я хотел бы знать, действительно ли это окажет значительное влияние, если я преобразую их в прогрессивные изображения. Каковы преимущества и недостатки использования прогрессивных изображений.


person Ayan    schedule 02.12.2016    source источник


Ответы (2)


Стандарт JPEG определяет множество режимов сжатия. Только три из них широко используются:

  • Базовый последовательный
  • Расширенный последовательный
  • прогрессивный

Единственная разница в первом заключается в разрешенном количестве столов. В остальном они кодируются и декодируются точно так же.

JPEG делит изображения на кадры, которые затем делятся на сканы. Вышеуказанные режимы разрешают только один кадр. Рамка — это образ. Сканирование проходит через данные изображения. Скан может содержать данные для одного компонента цвета или может быть чередован и содержать данные для нескольких компонентов цвета.

  • Последовательный поток JPEG в оттенках серого будет иметь одно сканирование.
  • Цветной последовательный поток JPEG может иметь одно или три сканирования.

JPEG берет 8x8 блоков пиксельных данных и применяет к этим данным дискретное косинусное преобразование. Данные из 64 пикселей становятся 64 коэффициентами DCT. Первый коэффициент DCT называется коэффициентом «DC», а остальные 63 называются коэффициентами «AC».

Это сбивает с толку терминологию, основанную на аналогии с постоянным и переменным током. Коэффициент DC аналогичен среднему значению пикселя блока.

В последовательном JPEG 64 коэффициента в блоке кодируются вместе (коэффициенты DC и AC кодируются по-разному). В Progressive JPEG сканирование коэффициентов DC и AC кодирует битовые поля (настраиваемого размера) внутри коэффициента. Теоретически у вас может быть отдельное сканирование для каждого бита каждого компонента.

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

Прогрессивное кодирование может быть медленнее, чем последовательное, потому что вам нужно сделать несколько проходов по данным.

Проблема скорости в прогрессивном декодировании зависит от того, как это делается. Если вы декодируете все изображение сразу, прогрессивный код может быть немного медленнее, чем последовательный. Если ваш декодер показывает затухание изображения по мере обработки потока, он будет намного медленнее, чем последовательный. Каждый раз, когда вы обновляете дисплей, вы должны выполнять обратное DCT, повышающую дискретизацию и преобразование цвета.

С другой стороны, можно получить гораздо лучшее сжатие, используя прогрессивный JPEG с хорошо настроенными развертками.

Нет никакой разницы в качестве между прогрессивным и последовательным

В этой книге описаны процессы:

https://rads.stackoverflow.com/amzn/click/com/0201604434

person user3344003    schedule 02.12.2016
comment
Больше, чем вы когда-либо хотели знать о JPEG… ;-) +1 - person deceze♦; 02.12.2016
comment
Вау.. много подкапотного материала для jpeg. :) - person Ayan; 02.12.2016

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

В браузерах, не поддерживающих прогрессивные изображения, вы ничего не увидите, пока не загрузите все изображение. (В настоящее время все современные браузеры наполовину поддерживают прогрессивные JPEG.)

Вы можете увидеть анимацию разницы в действии, например. здесь: https://www.youtube.com/watch?v=TOc15-2apY0< /а>

person deceze♦    schedule 02.12.2016
comment
Так есть ли разница в скорости? - person Ayan; 02.12.2016
comment
Скорость скачивания? Это зависит от размера изображения, которое зависит от того, как вы его сжимаете/сохраняете. Файлы одинакового размера загружаются за одно и то же время. Скорость обработки? Вряд ли стоит говорить. - person deceze♦; 02.12.2016
comment
Поэтому, если бы вы использовали jpeg в галерее, вы бы предпочли ленивую загрузку базового jpeg или прогрессивного jpeg. - person Ayan; 02.12.2016
comment
Я не думаю, что меня это сильно заботит, и я скорее попытаюсь найти правильный баланс между размером и качеством и поработаю над максимально быстрым механизмом доставки через CDN. - person deceze♦; 02.12.2016