Um arquivo JPEG, formalmente conhecido como arquivo JPEG/JFIF (Formato de intercâmbio de arquivos fotográficos/JPEG JPEG), é estruturado como uma sequência de segmentos de dados, cada um começando com um marcador. Esses marcadores identificam o tipo e a função dos dados do segmento. Aqui está um colapso dos principais componentes:
1. Início da imagem (SOI): O primeiro marcador, `ff d8`, sinaliza o início do arquivo JPEG. É como dizer:"Esta é uma imagem JPEG, preste atenção!"
2. Marcadores de aplicativos (appn): Marcadores específicos de aplicativos, indicados por `ff e0` para` ff ef`. Estes geralmente contêm metadados, como:
*
jfif (formato de intercâmbio de arquivo jpeg): Esse segmento contém informações sobre a resolução da imagem, o espaço de cores (geralmente o YCBCR) e outros parâmetros vitais. É crucial para a exibição adequada.
*
EXIF (formato de arquivo de imagem trocável): Isso contém metadados como configurações da câmera, data/hora, localização do GPS, etc. geralmente mais extenso que o JFIF.
*
Outros metadados: Outras aplicações podem adicionar seus próprios segmentos de metadados.
3. Tabela (s) de quantização (s) (DQT): Esses segmentos (`ff db`) definem as tabelas de quantização usadas para compressão com perdas. Essas tabelas determinam quanta detalhe é descartada durante a compressão. Diferentes tabelas podem ser definidas para luminância (brilho) e crominância (cor).
4. Tabela (s) de Huffman (DHT): Esses segmentos (`ff c4`) definem as tabelas de codificação de Huffman usadas para codificação de entropia. Essas tabelas ditam com que frequência os dados que ocorrem é representado com códigos mais curtos, aumentando a eficiência da compressão.
5. Início do quadro (SOF): Este marcador (`ff c0`,` ff c1`, `ff c2`) especifica as propriedades básicas da imagem:
*
Formato de dados da imagem: DCT de linha de base, DCT progressivo, etc.
*
Fatores de amostragem: Quantos pixels são amostrados para cada componente de cores (por exemplo, 4:2:0, 4:2:2, 4:4:4). Isso afeta a resolução das informações de cores.
*
Número de componentes: Geralmente 3 (Y, CB, Cr para imagens coloridas), mas pode ser 1 (escala de cinza).
*
Dimensões da imagem: Altura e largura em pixels.
6. Digitalize cabeçalho (SOS): O marcador `ff Da` indica o início dos dados da imagem compactada. Ele especifica quais componentes serão digitalizados e como.
7. Dados da imagem compactada: É aqui que os dados da imagem reais residem, codificados usando a transformação de cosseno discreto (DCT), quantização e codificação de Huffman (ou codificação aritmética). Esta é a maior parte do arquivo.
8. Fim da imagem (EOI): O marcador final, `ff d9`, sinaliza o final do arquivo JPEG.
em resumo: Um arquivo JPEG não é simplesmente um despejo de imagem bruto. É um recipiente cuidadosamente estruturado com metadados e dados de imagem compactados. O processo de compressão envolve vários estágios:
1.
conversão de cores (se aplicável): RGB é normalmente convertido em YCBCR.
2.
Transformação de cosseno discreto (DCT): Transforma os blocos de imagem em coeficientes de frequência.
3.
quantização: Reduz a precisão dos coeficientes do DCT, introduzindo compressão com perdas.
4.
codificação de entropia (Huffman ou aritmética): Compressa ainda mais os coeficientes quantizados atribuindo códigos mais curtos a valores mais frequentes.
A estrutura e o conteúdo exatos de um arquivo JPEG podem variar, dependendo das configurações usadas durante a compactação e a presença de metadados opcionais. Mas os marcadores básicos e sua sequência permanecem consistentes.