En JPEG -fil, formellt känd som en JPEG/JFIF -fil (Joint Photographic Experts Group/JPEG File Interchange -format), är strukturerat som en sekvens av datasegment, var och en börjar med en markör. Dessa markörer identifierar typen och funktionen för segmentets data. Här är en uppdelning av nyckelkomponenterna:
1. Bildstart (SOI): Den allra första markören, `ff d8`, signalerar början på JPEG -filen. Det är som att säga, "Det här är en JPEG -bild, var uppmärksam!"
2. App Markers (Appn): Applikationsspecifika markörer, indikerade med `ff e0` till` ff ef`. Dessa innehåller ofta metadata, till exempel:
* jfif (JPEG -filutbytesformat): Detta segment innehåller information om bildens upplösning, färgutrymme (vanligtvis YCBCR) och andra viktiga parametrar. Det är avgörande för korrekt visning.
* EXIF (utbytbar bildfilformat): Detta innehåller metadata som kamerainställningar, datum/tid, GPS -plats, etc. Ofta mer omfattande än JFIF.
* Andra metadata: Andra applikationer kan lägga till sina egna metadatasegment.
3. Kvantiseringstabell (er) (DQT): Dessa segment (`ff db`) definierar kvantiseringstabellerna som används för förlustkompression. Dessa tabeller avgör hur mycket detaljer som kastas under komprimering. Olika tabeller kan definieras för luminans (ljusstyrka) och krominans (färg).
4. Huffman -tabell (er) (DHT): Dessa segment (`FF C4`) definierar Huffman -kodningstabellerna som används för entropikodning. Dessa tabeller dikterar hur ofta förekommande data representeras med kortare koder, vilket förbättrar kompressionseffektiviteten.
5. Ramstart (SOF): Denna markör (`ff c0`,` ff c1`, `ff c2`) Anger bildens grundläggande egenskaper:
* Bilddataformat: Baslinje DCT, progressiv DCT, etc.
* provtagningsfaktorer: Hur många pixlar samplas för varje färgkomponent (t.ex. 4:2:0, 4:2:2, 4:4:4). Detta påverkar upplösningen av färginformation.
* Antal komponenter: Vanligtvis 3 (Y, CB, CR för färgbilder), men kan vara 1 (gråskala).
* Bilddimensioner: Höjd och bredd i pixlar.
6. Scan Header (SOS): Markören `ff da 'indikerar början på de komprimerade bilddata. Den anger vilka komponenter som ska skannas och hur.
7. Komprimerad bilddata: Det är här den faktiska bilddata finns, kodad med hjälp av diskret kosinus transform (DCT), kvantisering och Huffman -kodning (eller aritmetisk kodning). Detta är huvuddelen av filen.
8. End of Image (eoi): Den slutliga markören, `ff d9 ', signalerar slutet på jpeg -filen.
Sammanfattningsvis: En JPEG -fil är inte bara en rå bilddump. Det är en noggrant strukturerad behållare med metadata och komprimerad bilddata. Komprimeringsprocessen involverar flera steg:
1. färgkonvertering (om tillämpligt): RGB konverteras vanligtvis till YCBCR.
2. Diskret kosinustransform (DCT): Förvandlar bildblock till frekvenskoefficienter.
3. Kvantisering: Minskar Precisionen hos DCT -koefficienterna och introducerar förlustkomprimering.
4. entropikodning (Huffman eller Aritmetic): Ytterligare komprimerar de kvantiserade koefficienterna genom att tilldela kortare koder till mer frekventa värden.
Den exakta strukturen och innehållet i en JPEG -fil kan variera, beroende på inställningarna som används under komprimering och närvaron av valfria metadata. Men de grundläggande markörerna och deras sekvens förblir konsekventa.