Como posso saber se um JPEG foi salvo como Progressivo?

4

Recebi um conjunto de fotografias de um fotógrafo e preciso confirmar que os JPEGs não foram salvos como JPEGs progressivos. Eu tenho o Adobe Bridge e o Photoshop - como posso verificar isso?

    
por KArchives 08.12.2015 / 19:31

1 resposta

2

Alguns métodos simples:

  1. ImageMagick — On the command line run:
    identify -verbose mystery.jpg | grep Interlace
    The output will either be “Interlace:JPEG” or “Interlace: None.”
  2. Photoshop — Open file. Select File -> Save for Web & Devices.
    If it’s a progressive jpeg, the Progressive checkbox will be selected.
  3. Any browser — Baselines jpegs will load top to bottom, and progressive jpegs will do something else. If the file loads too fast, you may need to add bandwidth throttling. I use ipfw on my Mac.

Fonte

Métodos programáticos

Confira Detectando JPEG progressivo . O autor publica links para vários roteiros que as pessoas desenvolveram:

Alguns bytes de identificação podem ser usados para reconhecer os arquivos. Um JPEG progressivo baseado em DCT pode ser identificado pelos bytes “0xFF, 0xC2 ″. Além disso, as imagens JPEG progressivas geralmente contêm várias digitalizações para que você possa procurar algumas combinações de “Início da varredura” (bytes: “0xFF, 0xDA”). O autor usou um comando Bash simples para obter resultados precisos:

>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

O link também contém várias outras ferramentas úteis.

Atualizar

O enredo engrossa (graças ao usuário PussInBoots por me alertar para me aprofundar). A pergunta é como saber se um JPEG foi salvo como Progressivo.

  • "Salvo como" parece ter um significado flexível. Eu experimentei e descobri que, em alguns casos, salvar como progressivo significava apenas que o parâmetro de metadados (Interlace) foi alterado, mas o arquivo não foi realmente alterado para conter verificações progressivas. Portanto, o arquivo contém uma única imagem e o software de renderização é instruído a tratá-la como uma imagem progressiva.

    A maneira como esses arquivos progressivos "falsos" se manifestam nos testes descritos acima:

    • InageMagick: O parâmetro Interlace é lido como "JPEG" em vez de "None".

    • Photoshop: A única versão do Photoshop que eu tinha prontamente disponível é antiga (versão 7.0). Na caixa de diálogo Salvar para a Web, a caixa Progressive foi pré-verificada nesses arquivos, mas não para JPEGs padrão.

    • Navegador: Meu sistema e minha conexão com a Internet são muito rápidos para que isso seja um teste útil. Em condições normais, tudo está perto o suficiente para instantaneamente não ser capaz de diferenciar de forma confiável qualquer diferença.

    • Como identificar bytes: Esse parece ser um indicador mais confiável. Os JPEGs progressivos "falsos" não tinham nenhum dos padrões de bytes de identificação.

  • Portanto, para a pergunta original, se algum dos testes acima indicar que o arquivo é não um JPEG progressivo, você pode confiar no fato de que não é. No entanto, os "métodos simples", acima, não parecem diferenciar de maneira confiável os JPEGs progressivos verdadeiros dos "falsos", então você não pode confiar neles para saber se um JPEG é realmente progressivo. Na verdade, o PussInBoots relata no comentário que o Photoshop CS6 parece ter uma opção padrão como "progressiva", portanto, a configuração inicial não informa nada sobre o arquivo existente.

por 08.12.2015 / 21:35