Как найти качество JPG?

16

Когда я сохраняю файл JPG с помощью GIMP, я могу настроить качество, в котором я его сохраняю, от 0 до 100 (я использую 89). Кажется, что я использовал приложение, чтобы увидеть, что это число было в сохраненном файле, но если я это сделал, я не могу на всю жизнь понять, что это было. Любые предложения относительно того, что использовать?

Натаниель
источник
2
Просто чтобы убедиться, что это известно: настройки качества различных приложений несопоставимы, в общем: faqs.org/faqs/jpeg-faq/part1/section-5.html . И GIMP, и ImageMagick должны использовать шкалу качества IJG.
Михаэль Шумахер,

Ответы:

22

После сохранения вы не можете больше узнать качество.

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

Хммм, наверное я ошибся. Я до сих пор думаю , что выше верно, но ImageMagick «s identifyдоказывает меня неправильно?

определить -бесный myimage.jpg

Изображение: myimage.jpg
  Формат: JPEG (формат JFIF Объединенной группы экспертов по фотографии)
  Класс: DirectClass
  Геометрия: 358х240 + 0 + 0
  Разрешение: 300x300
  [...]
  Сжатие: JPEG
  Качество: 90
  Ориентация: Не определено
  [...]

Я не знаю, как изображение в моем тесте было сохранено, но в нем нет данных EXIF. Может ли качество сохраняться в изображении?

Арьян
источник
Не можете ли вы поэкспериментировать с преобразованием в разные качества? Мне трудно в это поверить, если ImageMagick не сохранит некоторые личные данные в jpg (поэтому это может не работать с другими пакетами).
Harrymc
Интересный. Я буду ждать, чтобы увидеть, как это получится.
Натаниэль
1
+1 Да, имиджмагик работает. Я могу несколько раз изменить качество JPEG и использовать идентификатор, чтобы увидеть изменения. Это работает, если я использую конвертирование (еще одно изображение), или другой инструмент, такой как MS Photo Editor.
DaveParillo
1
ImageMagick делает что-то другое. Он дает оценку, а не читает то, что сделал ваш оригинальный софт. Ваш оригинальный, зачеркнутый ответ действительно более правильный. Смотрите ответ @ sleske.
Mattdm
26

Чтобы добавить к ответу Арджана:

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

Исходный код ImageMagick (поболеть за бесплатное программное обеспечение :-)) содержит строки :

/*
  Determine the JPEG compression quality from the quantization tables.
*/
sum=0;
for (i=0; i < NUM_QUANT_TBLS; i++)
{
  if (jpeg_info.quant_tbl_ptrs[i] != NULL)
    for (j=0; j < DCTSIZE2; j++)
      sum+=jpeg_info.quant_tbl_ptrs[i]->quantval[j];

( coders/jpeg.cстрока 843 и далее в моей последней версии исходного кода ImageMagick).

Я не достаточно разбираюсь в JPEG, чтобы по-настоящему понять, но, похоже, он делает что-то вроде описанного в этой статье:

Определите коэффициент качества JPEG с помощью Visual C # .NET (мертвая ссылка на январь 2018 года; копия на archive.org с 2015 года )

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

sleske
источник
1
Вау. Очень мило с вашей стороны проверить исходный код. Здорово.
Натаниэль
@ Натаниэль, можешь ли ты выбрать этот ответ как принятый вместо моего? Благодарность! (Я не могу удалить свой, пока он принят.)
Арджан
Он ищет таблицу квантования JPEG, которая лучше всего объясняет, как выглядит сжатый поток битов.
jbarlow
5

Как сказал Арджан, это identify -verbose myimage.jpgбудет сделано. Поскольку imagemagick - это инструмент CLI, он может быть полезен для сценариев. Подход identify -verbose myimage.jpg | grep ...очень медленный. Я рекомендую использовать IM, как это

identify -format '%Q' myimage.jpg

Это намного быстрее.

ManuelSchneid3r
источник
2

JPEGsnoop - хорошая альтернатива ImageMagick identify. Загрузка довольно мала и доступна в портативном формате.

После обработки JPG, вы найдете «Приблизительный коэффициент качества» под маркером DQT.

idmadj
источник
1

С библиотекой ImageMagick ++ это легко:

Image magick_image( pathname );
size_t compressionFactor = magick_image.quality(); // 0..100
Валерий Ван
источник
1

Picasa 3 имеет панель свойств, которая показывает качество JPEG, но на данный момент это пустая программа. Picasa 3 Дик Мастерсон

Угур Гюмюшан
источник
filehorse.com/download-picasa
Иман Абиди