Как я могу узнать, был ли JPEG сохранен как прогрессивный?

Я получил набор фотографий от фотографа и должен подтвердить, что JPEG не были сохранены как прогрессивные JPEG. У меня есть Adobe Bridge и Photoshop - как это проверить?

3 ответа

Несколько простых методов:

  1. ImageMagick - В командной строке запустите:
    identify -verbose mystery.jpg | grep Interlace
    Вывод будет либо "Чересстрочная развертка:JPEG", либо "Чересстрочная развертка: нет".
  2. Photoshop - Открыть файл. Выбрать File -> Save for Web & Devices,
    Если это прогрессивный JPEG, флажок Progressive будет выбран.
  3. Любой браузер - Базовые jpegs будут загружаться сверху вниз, а прогрессивные jpegs будут делать что-то еще. Если файл загружается слишком быстро, вам может потребоваться добавить регулирование пропускной способности. Я использую ipfw на моем Mac.

Источник

Программные методы

Проверьте Обнаружение Прогрессивного JPEG. Автор публикует ссылки на ряд разработанных сценариев:

Для идентификации файлов можно использовать пару идентифицирующих байтов. JPEG с прогрессивным DCT может быть идентифицирован байтами "0xFF, 0xC2". Кроме того, прогрессивные изображения JPEG обычно содержат несколько сканирований, поэтому вы можете найти пару совпадений "Начало сканирования" (байты: "0xFF, 0xDA"). Автор использовал простую команду Bash для получения точных результатов:

>grep -c -P “xffxc2″ progressive1.jpg
>1

>grep -c -P “xffxc2″ progressive2.jpg
>1

>grep -c -P “xffxc2″ baseline1.jpg
>0

>grep -c -P “xffxc2″ baseline2.jpg
>0

>grep -c -P “xffxDA” progressive1.jpg
>6

>grep -c -P “xffxDA” progressive2.jpg
>12

Ссылка также содержит ряд других полезных инструментов.

Обновить

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

  • "Сохранено как", по-видимому, имеет гибкий смысл. Я экспериментировал и обнаружил, что в некоторых случаях сохранение как прогрессивное означало только то, что параметр метаданных (чересстрочная развертка) был изменен, но файл фактически не был изменен, чтобы содержать прогрессивные сканы. Таким образом, файл содержит одно изображение, и программное обеспечение рендеринга должно обрабатывать его как прогрессивное изображение.

    То, как эти "фальшивые" прогрессивные файлы проявляются в тестах, описанных выше:

    • InageMagick: параметр Interlace читается как "JPEG", а не "None".

    • Photoshop: единственная версия Photoshop, которую я имел в наличии, это древняя (версия 7.0). В диалоговом окне "Сохранить для Web" Progressive флажок был предварительно установлен для этих файлов, но не для стандартных JPEG.

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

    • Идентификация байтов: это, кажется, более надежный индикатор. У "фальшивых" прогрессивных JPEG-файлов не было ни одного идентифицирующего шаблона байтов.

  • Таким образом, на оригинальный вопрос, если какой-либо из тестов, приведенных выше, указывает, что файл не является прогрессивным JPEG, вы можете положиться на тот факт, что это не так. Однако вышеприведенные "простые методы" не позволяют надежно отличить настоящие прогрессивные JPEG от "липовых", поэтому вы не можете полагаться на них, чтобы узнать, действительно ли JPEG является прогрессивным. Фактически, PussInBoots сообщает в комментарии, что Photoshop CS6, кажется, имеет выбор по умолчанию как "прогрессивный", поэтому его первоначальная настройка ничего не говорит о существующем файле.

Если вы используете Unix, используйтеfileкоманда:

$ file image.jpg

image.jpg: JPEG image data, Exif standard: [TIFF image data, little-endian, direntries=0], progressive, precision 8, 2000x1200, components 3

Для будущих поколений - есть более простой способ. Просто проверьте это с Irfanview. Нажмите на Изображение-> Информация.

Другие вопросы по тегам