JPEG metadata structure is framed in several levels:
- See JPEG level. containing all JPEG metadata,
- See JPEG marker segment levels. containing metadata of each particular JPEG marker segment.
JPEG Level
Name |
Id |
Type |
Value Type |
Value |
Value Length |
Ignored on save |
"JPEG-JFIF" |
ImGearFormats.JPG |
Tree |
|
|
|
|
JPEG marker segment levels |
JPEG Marker Segment Levels
The following JPEG marker segments metadata are supported:
- See Frame marker segment level. - SOF0, SOF1, SOF2 and SOF3 (read only)
- See Frame component level.
- See Scan marker segment level. - SOS (read only)
- See Scan component level.
- See Define-quantization-table marker segment level. - DQT (read only)
- See Define-quantization-table table level.
- See Define-Huffman-tables marker segment level. - DHT (read only)
- See Define-Huffman-table table level.
- See Comment marker segment level. - COM (read/write),
- See Application marker segment level. - APP0-APP15 (read/write).
Segment level markers are described in the tables below.
Frame Marker Segment Level
Name |
Id |
Type |
Value Type |
Value |
Value Length |
Ignored on save |
"Precision" |
ImGearJPEGTagIDs. FRAME_PRECISION |
Leaf |
UINT8 |
|
1 |
TRUE |
"Lines" |
ImGearJPEGTagIDs. FRAME_LINES |
Leaf |
UINT16 |
|
1 |
TRUE |
"SamplesPerLine" |
ImGearJPEGTagIDs. FRAME_SAMPLES_PER_LINE |
Leaf |
UINT16 |
|
1 |
TRUE |
"NumberOfComponents" |
ImGearJPEGTagIDs. FRAME_NUMBER_OF_COMPONENTS |
Leaf |
UINT8 |
<n> |
1 |
TRUE |
Frame component level 1 |
ImGearJPEGTagIDs. FRAME_COMPONENT_SPEC |
Tree |
|
|
|
|
... |
Frame component level <n> |
ImGearJPEGTagIDs. FRAME_COMPONENT_SPEC |
Tree |
|
|
|
|
Frame Component Level
Name |
Id |
Type |
Value Type |
Value |
Value Length |
Ignored on save |
"Identifier" |
ImGearJPEGTagIDs. FRAME_COMPONENT_ID |
Leaf |
UINT |
<Component No.> |
1 |
TRUE |
HVSamplingFactors |
ImGearJPEGTagIDs. FRAME_COMPONENT_HV_SAMPLING |
Leaf |
UINT |
|
1 |
TRUE |
"QuantizationNumber" |
ImGearJPEGTagIDs. FRAME_COMPONENT_QUANT_SELECTOR |
Leaf |
UINT |
|
1 |
TRUE |
|
<Component No.> is frame component identifier of appropriate component. |
Scan Marker Segment Level
Name |
Id |
Type |
Value Type |
Value |
Value Length |
Ignored on save |
"ComponentNumber" |
ImGearJPEGTagIDs. SCAN_COMPONENT_NUMBER |
Leaf |
UINT8 |
<n> |
1 |
TRUE |
Scan component level 1 |
ImGearJPEGTagIDs.SCAN_COMPONENT |
Tree |
|
|
|
|
|
Scan component level <n> |
ImGearJPEGTagIDs.SCAN_COMPONENT |
Tree |
|
|
|
|
"SpectralStart" |
ImGearJPEGTagIDs.SCAN_SP_START |
Leaf |
UINT8 |
|
1 |
TRUE |
"SpectralEnd" |
ImGearJPEGTagIDs.SCAN_SP_END |
Leaf |
UINT8 |
|
|
TRUE |
"AH_AL" |
ImGearJPEGTagIDs.SCAN_AH_AL |
Leaf |
UINT8 |
|
|
TRUE |
Scan Component Level
Name |
Id |
Type |
Value Type |
Value |
Value Length |
Ignored on save |
"Selector" |
ImGearJPEGTagIDs. SCAN_SELECTOR |
Leaf |
UINT8 |
|
1 |
TRUE |
"DC_AC" |
ImGearJPEGTagIDs. SCAN_DC_AC |
Leaf |
UINT8 |
|
1 |
TRUE |
Define-Quantization-Table Marker Segment Level
Name |
Id |
Type |
Value Type |
Value |
Value Length |
Ignored on save |
"QuantizationTable" |
ImGearJPEGTagIDs.QUANT_TABLE |
Tree |
|
|
|
|
|
"QuantizationTable" |
ImGearJPEGTagIDs.QUANT_TABLE |
Tree |
|
|
|
|
Define-Quantization-Table Table Level
Name |
Id |
Type |
Value Type |
Value |
Value Length |
Ignored on save |
"Descriptor" |
ImGearJPEGTagIDs. QUANT_TABLE_DESCRIPTOR |
Leaf |
UINT8 |
|
|
TRUE |
"Elements" |
ImGearJPEGTagIDs. QUANT_TABLE_ELEMENTS |
Leaf |
UINT8 or UINT16 |
|
|
TRUE |
Define-Huffman-Tables Marker Segment Level
Name |
Id |
Type |
Value Type |
Value |
Value Length |
Ignored on save |
"HuffmanTable" |
ImGearJPEGTagIDs.HUFFMAN_TABLE |
Tree |
|
|
|
|
|
"HuffmanTable" |
ImGearJPEGTagIDs.HUFFMAN_TABLE |
Tree |
|
|
|
|
Define-Huffman-Table Table Level
Name |
Id |
Type |
Value Type |
Value |
Value Length |
Ignored on save |
"Descriptor" |
ImGearJPEGTagIDs. HUFFMAN_TABLE_DESCRIPTOR |
Leaf |
UINT8 |
|
|
TRUE |
"Lengths" |
ImGearJPEGTagIDs. HUFFMAN_TABLE_LENGTH |
Leaf |
UINT8 |
|
|
TRUE |
"Values" |
ImGearJPEGTagIDs. HUFFMAN_TABLE_VALUES |
Leaf |
UINT8 |
|
|
TRUE |
|
"Values" |
ImGearJPEGTagIDs. HUFFMAN_TABLE_VALUES |
Leaf |
UINT8 |
|
|
TRUE |
Comment Marker Segment Level
Name |
Id |
Type |
Value Type |
Value |
Value Length |
Ignored on save |
"Comment" |
ImGearJPEGTagIDs. COMMENT |
Leaf |
STRING |
|
<ValueSize> |
FALSE |
Application Marker Segment Level
There are several application marker segments, which data structure is well known. These segments are parsed and their data are passed in special format.
These marker segments are:
- See JFIF APP0 segment.
- JFIF extension (JFXX) APP0 segment (read only)
- EXIF APP1 segment
- See Photoshop Image Resource APP13 marker segment. (it includes some IPTC data and another See Photoshop Image Resource metadata structure. )
- See Other application marker segment levels.
JFIF APP0 Segment
Name |
Id |
Type |
Value Type |
Value |
Value Length |
Ignored on save |
"JFIF_HEADER" |
ImGearJPEGTagIDs. JFIF_ID |
Leaf |
STRING |
JFIF |
5 |
TRUE |
"Version" |
ImGearJPEGTagIDs. JFIF_VERSION |
Leaf |
UINT16 |
|
1 |
FALSE |
"ResolutionUnits" |
ImGearJPEGTagIDs. JFIF_UNITS |
Leaf |
UINT8 |
|
1 |
FALSE |
"ResolutionX" |
ImGearJPEGTagIDs. JFIF_X_RES |
Leaf |
UINT16 |
|
1 |
FALSE |
"ResolutionY" |
ImGearJPEGTagIDs. JFIF_Y_RES |
Leaf |
UINT16 |
|
1 |
FALSE |
"ThumbnailWidth"18 |
ImGearJPEGTagIDs. JFIF_THUMB_WIDTH |
Leaf |
UINT8 |
|
1 |
TRUE |
"ThumbnailHeight"19 |
ImGearJPEGTagIDs. JFIF_THUMB_HEIGHT |
Leaf |
UINT8 |
|
1 |
TRUE |
Photoshop Image Resource APP13 Marker Segment
Name |
Id |
Type |
Value Type |
Value |
Value Length |
Ignored on save |
"PHOTOSHOP_HEADER" |
ImGearJPEGTagIDs. PHOTOSHOP_HEADER |
Leaf |
STRING |
"Photoshop 3.0" |
14 |
FALSE |
Photoshop Image Resource level 1 |
... |
Photoshop Image Resource level n |
|
For "Photoshop Image Resource" metadata structure see Photoshop Image Resource metadata structure Table. |
Other Application Marker Segment Levels
Name |
Id |
Type |
Value Type |
Value |
Value Length |
Ignored on save |
"DATA" |
ImGearJPEGTagIDs. BINARY_DATA |
Leaf |
RAW_DATA |
|
<ValueSize> |
FALSE |