====== JPEG ====== Dies ist ein binäres Format in Big-Endian Anordnung. Folgende Datentypen kommen zur Anwendung: ^char |String mit 8-Bit Kodierung | ^uint8 |vorzeichenlose 8-Bit Zahl | ^uint16 |vorzeichenlose 16-Bit Zahl | Die Daten sind in Blocks organisiert. Zunächst folgen mehrere Metadatenblocks, danach ein oder mehrere Bilddatenblocks. Die Metadatenblocks beginnen mit Blockmarkern, aus welchen sich die Länge des Blocks ableiten lässt. ===== Blockaufbau ===== Alle Metadatenblocks beginnen folgendermassen: ^Position ^Grösse ^Typ ^Wert ^ | 0|1 Byte |uint8 |0xFF | | 1|1 Byte |uint8 |Blocktyp | Blocks mit Blocktyp 0xD0 - 0xD9 bestehen nur aus diesen beiden Bytes. Bei allen anderen Blocks geht es folgendermassen weiter: ^Position ^Grösse ^Typ ^Wert ^ | 2|2 Byte |uint16 |Blockgrösse | | 4|Blockgrösse - 2 |* |Blockdaten | ===== Frame Header ===== [[/grundlagen/dateien/bilder/jpeg#dateiaufbau|Details Frame Header]] Der Frame Header hat einen der Typen 0xC0 - 0xCF ohne die Typen 0xC4, 0xC8 und 0xCC. ^Position ^Grösse ^Typ ^Wert ^ | 0|1 Byte |uint8 |0xFF | | 1|1 Byte |uint8 |Blocktyp | | 2|2 Byte |uint16 |Blockgrösse | | 4|1 Byte |uint8 |Bittiefe | | 5|2 Byte |uint16 |Bildhöhe | | 7|2 Byte |uint16 |Bildbreite | | 9|1 Byte |uint8 |Farbraum | Der Farbraum ist 1 für Graustufen, 3 für RGB, 4 für CMYK. ===== ICC-Profil ===== [[/grafik/farbkorrektur/bilder#jpeg|Details ICC-Profil]] Die Blöcke mit dem ICC-Profil haben den Typ 0xE2. ^Position ^Grösse ^Typ ^Wert ^ | 0|1 Byte |uint8 |0xFF | | 1|1 Byte |uint8 |0xE2 | | 2|2 Byte |uint16 |Blockgrösse | | 4|11 Byte |char |ASCII-String ''ICC-PROFILE'' | | 15|1 Byte |uint8 |0 | | 16|1 Byte |uint8 |Blocknummer | | 17|1 Byte |uint8 |Blockanzahl | | 18|Blockgrösse - 16 |* |ICC-Profildaten | Es können noch andere Blöcke mit Typ 0xE2 vorhanden sein. Darum sollte man auch auf den String ''ICC-PROFILE'' prüfen. Ist die Blockanzahl nicht 1, so ist das Profil über mehrere Blöcke verteilt. Der Inhalt der Blöcke muss in der durch die Blocknummer vorgegebene Reihenfolge aneinandergehängt werden. ===== unnötige Blöcke ===== [[/grundlagen/dateien/bilder/jpeg#platz_sparen|Details unnötige Blöcke]] Blöcke mit Typ 0xE0 - 0xFE sind für die Dekompression selbst unnötig, und müssen nicht in das Bildobjekt des PDF übernommen werden. ===== letzter Block ===== Der Start of Scan Block hat den Typ 0xDA. Dies ist immer der letzte Metadatenblock. Auf ihn folgen die komprimierten Bilddaten.