Como posso saber se um JPEG foi salvo como Progressivo?

Como posso saber se um JPEG foi salvo como Progressivo?

Recebi um conjunto de fotografias de um fotógrafo e preciso confirmar se os JPEGs não foram salvos como JPEGs Progressivos. Tenho o Adobe Bridge e o Photoshop. Como posso verificar isso?

Responder1

Alguns métodos simples:

  1. ImagemMagick— Na execução da linha de comando:
    identify -verbose mystery.jpg | grep Interlace
    A saída será “Interlace:JPEG” ou “Interlace: None”.
  2. Photoshop- Abrir arquivo. Selecione File -> Save for Web & Devices.
    Se for um jpeg progressivo, a caixa de seleção Progressivo estará marcada.
  3. Qualquer navegador- Os jpegs de linha de base serão carregados de cima para baixo, e os jpegs progressivos farão outra coisa. Se o arquivo carregar muito rápido, pode ser necessário adicionar limitação de largura de banda. Eu uso ipfw no meu Mac.

Fonte

Métodos programáticos

ConfiraDetectando JPEG Progressivo. O autor publica links para vários scripts 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, imagens JPEG progressivas geralmente contêm múltiplas varreduras, então você pode procurar algumas correspondências 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

A trama se complica (graças ao usuário PussInBoots por me alertar para ir mais fundo). A pergunta perguntava como saber se um JPEG erasalvoucomo progressista.

  • "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) era alterado, mas o arquivo não era realmente alterado para conter varreduras progressivas. Portanto, o arquivo contém uma única imagem e o software de renderização é instruído a tratá-lo como uma imagem progressiva.

    A forma 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 disponível era a antiga (versão 7.0). Na caixa de diálogo Salvar para a Web, a Progressivecaixa foi pré-marcada 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 este seja um teste útil. Em condições normais, tudo é próximo o suficiente do instantâneo para não ser possível diferenciar com segurança qualquer diferença.

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

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

Responder2

Se você estiver em um Unix, use o filecomando:

$ file image.jpg

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

Responder3

Para as gerações futuras - existe uma maneira mais simples. Basta verificar com o Irfanview. Clique em Imagem->Informações.

Verifique as propriedades JPEG usando Irfanview

informação relacionada