Dicionário

O que significa a versão JFIF?

JFIF significa JPEG File Interchange Format, o formato dos arquivos que as pessoas geralmente chamam de imagens JPEG. A versão JFIF mostra qual versão desse formato um arquivo segue.

jfif-version

JFIF significa JPEG File Interchange Format, e JPEG significa Joint Photographic Experts Group. JFIF é o formato de arquivo que armazena dados de imagem JPEG, para que diferentes programas e computadores possam abri-los.

A versão JFIF é um campo de metadados dentro de um arquivo JPEG. Ela informa qual versão da especificação JFIF o arquivo segue, por exemplo 1.01 ou 1.02. Você encontra esse campo em arquivos JPG, porque JFIF é um formato apenas para imagens JPEG.

O que o JFIF adiciona a uma imagem JPEG

O padrão JPEG define como os dados da imagem são compactados. Um arquivo JFIF é um arquivo JPEG normal com um bloco extra de dados, chamado de segmento APP0. Esse bloco vem diretamente depois do marcador que inicia a imagem.

Os dados no segmento APP0 começam com o texto JFIF. O segmento armazena informações que os dados de imagem compactados não contêm:

  • A versão JFIF
  • A densidade de pixels horizontal e vertical, com uma unidade de resolução em polegadas, centímetros ou sem unidade
  • A proporção de pixels (aspect ratio), que um programa calcula a partir dos 2 valores de densidade
  • Uma pequena prévia opcional da imagem, chamada de miniatura

JFIF também define o modelo de cor. Uma imagem JFIF tem 1 canal somente de brilho ou 3 canais no espaço de cores YCbCr.

Quais arquivos o carregam

O tipo MIME image/jpeg foi definido para imagens JPEG no formato JFIF. As extensões de arquivo .jpg, .jpeg, .jpe, .jif e .jfif pertencem a esse formato. Assim, um arquivo cujo nome termina em .jfif contém o mesmo tipo de imagem que um arquivo .jpg.

Câmeras digitais geralmente salvam fotos JPEG no formato Exif. O Exif armazena seus metadados principalmente em um segmento APP1, e esse segmento também deve vir diretamente depois do início da imagem. Como ambos os segmentos precisam vir primeiro, um arquivo não pode seguir JFIF e Exif ao mesmo tempo.

Alguns programas ainda gravam um segmento JFIF antes do segmento Exif. Em um arquivo assim, você vê tanto uma versão JFIF quanto uma versão Exif.

Como são os valores

A versão JFIF é armazenada em 2 bytes. O primeiro byte guarda a versão principal (major) e o segundo byte guarda a versão secundária (minor). A versão 1.02 é armazenada como os bytes 01 e 02.

O ExifTool exibe o campo como JFIFVersion. Ele mostra o número principal, um ponto e um número secundário com 2 dígitos. Registros de formatos listam 3 versões de JFIF:

  • 1.00: uma versão inicial da especificação
  • 1.01: a versão anterior à 1.02
  • 1.02: a versão de 1º de setembro de 1992

De onde vem o valor

O programa que salva o arquivo JPEG grava o segmento APP0 e o número da versão nele. A ITU publicou o JFIF como Recomendação T.871 em 2011, e ISO e IEC publicam o mesmo texto como ISO/IEC 10918-5. Esse padrão é baseado na versão 1.02, e arquivos que o seguem devem armazenar o valor 1.02.

Programas baseados na biblioteca libjpeg gravam 1.01 por padrão. A documentação diz para definir 1.02 quando um programa adiciona um segmento de extensão da versão 1.02. Assim, um arquivo salvo hoje pode mostrar 1.01 ou 1.02.

Por que isso é importante para o seu arquivo

A versão informa a um programa se ele pode ler os dados JFIF. A especificação diz que um arquivo geralmente pode ser decodificado quando sua versão principal corresponde à versão principal que o programa suporta.

A versão também mostra quais miniaturas o arquivo pode conter. Um segmento de extensão chamado JFXX é permitido somente na versão 1.02 e posteriores. O segmento JFXX pode conter uma miniatura compactada com JPEG ou uma miniatura sem compactação.

Um arquivo JPEG sem versão JFIF não tem segmento JFIF. Isso é normal para fotos que uma câmera salvou no formato Exif.