15

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

6 ответов6

24

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

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 , строка 843ff. в моей последней версии исходного кода ImageMagick).

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

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

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

22

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

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

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

identify -verbose myimage.jpg

Image: myimage.jpg
  Format: JPEG (Joint Photographic Experts Group JFIF format)
  Class: DirectClass
  Geometry: 358x240+0+0
  Resolution: 300x300
  [...]
  Compression: JPEG
  Quality: 90
  Orientation: Undefined
  [...]

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

5

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

identify -format '%Q' myimage.jpg

Это значительно быстрее.

2

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

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

1

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

Image magick_image( pathname );
size_t compressionFactor = magick_image.quality(); // 0..100
1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .