Действительно ли возможно сказать уровень качества JPEG?

Это - действительно два вопроса о части, так как я не полностью понимаю, как эти вещи работают просто все же:

Моя ситуация: я пишу веб-приложение, которое позволяет пользователю загрузить изображение. Мое приложение затем изменяет размер к чему-то визуализуемому (например: 640x480-выход), и сохранил файл для использования позже.

Мои вопросы:

  1. Учитывая произвольный файл JPEG, действительно ли возможно сказать, каков уровень качества, так, чтобы я мог использовать то же самое качество при сохранении измененного образа?
  2. Это даже имеет значение?? Если я сохраняю все образы на достойном уровне (например: 75-80), независимо от исходного качества?

Я не так уверен в этом, потому что, как я изображаю его: (давайте возьмем экстремальный пример), если бы кому-то сохранили изображение на 5 мегапикселей в качестве 0, то это было бы массивно как что-либо. Уменьшая размер изображения до 640x480, распад изображения на квадраты был бы сглажен и едва менее примечательный..., пока я не сохранил его с качеством 0 снова...

На другом конце спектра, если было изображение, которое было 800x600 с q=0, изменяя размер к 640x480, не собирается изменять то, что похоже, что чрезвычайное дерьмо, таким образом сохраняя с q=80 было бы избыточно.

Я даже близок?

Я пользуюсь библиотекой GD2 на PHP, если это имеет какое-либо применение

65
задан nickf 14 November 2013 в 21:33
поделиться

6 ответов

  1. JPEG - это формат с потерями. Каждый раз, когда вы сохраняете одно и то же изображение в формате JPEG, независимо от уровня качества, вы снижаете фактическое качество изображения. Поэтому, даже если вы получите уровень качества из файла, вы не сможете сохранить то же самое качество при повторном сохранении JPEG (даже при качестве = 100).

  2. Вы должны сохранить JPEG с таким высоким качеством, которое вы можете себе позволить с точки зрения размера файла. Или используйте формат без потерь, такой как PNG.

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

В соответствии со спецификацией JFIF. номер качества (0-100) не сохраняется в заголовке изображения, хотя сохраняется плотность пикселей по горизонтали и вертикали.

27
ответ дан 24 November 2019 в 15:17
поделиться

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

2
ответ дан 24 November 2019 в 15:17
поделиться

Если вы восстановите JPEG, используя то же программное обеспечение, которое создавало его изначально, с теми же настройками, вы обнаружите, что повреждение сведено к минимуму - алгоритм будет стремиться выбросить ту же самую информацию, которую он выбросил в первый раз. Я не думаю, что есть какой-то способ узнать, какой уровень был выбран, просто посмотрев на файл; даже если бы вы могли, разные программы почти гарантируют разные параметры и округление, что делает совпадение практически невозможным.

1
ответ дан 24 November 2019 в 15:17
поделиться

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

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

Некоторые программы позволяют пользователю устанавливать уровень качества 0-100. Но нет общего определения этого номера. Изображение, сделанное с Photoshop с качеством 60%, занимает 46 КБ, а изображение, сделанное с GIMP, занимает всего 26 КБ.

Таблицы квантования также различны.

Существуют другие параметры, такие привыки, метод DCT и т. Д.

, поэтому вы не можете описать все из них одним номером уровня качества, и вы не можете сравнить качество изображений JPEG по одному номеру. Но вы можете создать такой номер, как Photoshop или GIMP, который будет описывать Compomiss между размером по качеству.

Дополнительная информация: http://patrakov.blogspot.com/2008/12/jpeg-quality-is-meanningless-number.html

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

8
ответ дан 24 November 2019 в 15:17
поделиться

Итак, в основном есть два случая, которые вы заботитесь о:

  1. , если входящее изображение имеет качественный набор слишком высоко, он может принять неподходящее количество места. Следовательно, вы можете захотеть, например, для уменьшения входящего q = 99 до q = 85.

  2. Если входящее изображение имеет качество, установленное слишком низким, это может быть пустая трата пространства для повышения качества. За исключением того, что изображение, которое имело большое количество данных, отброшенное, не будет волшебным образом занимать больше места, когда качество поднимается - блокирующие изображения будут очень хорошо сжиматься даже при высококачественных условиях. Итак, на мой взгляд, это совершенно нормально, чтобы поднять входящий q = 1 до q = 85.

Из этого я бы подумал, что просто заставляя приличную настройку качества - совершенно приемлемая вещь.

3
ответ дан 24 November 2019 в 15:17
поделиться

Это может быть глупым вопросом, но зачем ли вы заботиться о микроумении качеством документа? Я верю, что если вы используете ImageMagick, чтобы сделать преобразование, он будет управлять качеством JPEG для наилучшего эффекта. http://www.php.net/manual/en/intro.imagick.php

1
ответ дан 24 November 2019 в 15:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: