ImageGear .NET - Updated
PNG Metadata Structure
User Guide > File Formats and Compressions > File Formats > Metadata Structures > PNG Metadata Structure

PNG format groups non-image data in "Chunks". ImageGear represents simpler chunks by single metadata items, and more complex chunks by subtrees.

There are two main PNG metadata levels in ImageGear:

PNG Metadata Level

Name Id Type Value Type Value Value Length Ignored on save
<PNG chunk names> <PNG chunk ids> <PNG chunk type>        

For <PNG chunk names >, <PNG chunk ids> and <PNG Chunk types> see See PNG chunks metadata level. section.

PNG Chunks Metadata Level

The following PNG non-image chunk levels are supported by ImageGear:

PNG Header Chunk Metadata PNG Level

Name Id Type Value Type Value Value Length Ignored on save
"IHDR" 0x49484452 Tree        

Header Chunk Level

Name Id Type Value Type Value Value Length Ignored on save
"Width" 0x49484452 Leaf UINT32   1 TRUE
"Height" 0x49484452 Leaf UINT32   1 TRUE
"BitDepth" 0x49484452 Leaf UINT8   1 TRUE
"ColorType" 0x49484452 Leaf UINT8   1 TRUE
"CompressionType" 0x49484452 Leaf UINT8   1 TRUE
"FilterType" 0x49484452 Leaf UINT8   1 TRUE
"InterlaceType" 0x49484452 Leaf UINT8   1 TRUE

Physical Dimension Chunk Metadata PNG Level

Name ID Type Value Type Value Value Length Read Only
"pHYs" 0x70485973 Tree        

Physical Dimension Chunk Level

Name ID Type Value Type Value Value Length Read Only
"XAxis" 0x70485973 Leaf UINT32   1 FALSE
"YAxis" 0x70485973 Leaf UINT32   1 FALSE
"UnitSpecifier" 0x70485973 Leaf UINT8   1 FALSE

Transparency Chunk Metadata PNG Level

Name ID Type Value Type Value Value Length Read Only
"tRNS" 0x74524e53 Leaf UINT8 or

UINT16
  Variable FALSE

Gamma Chunk Metadata PNG Level

Name ID Type Value Type Value Value Length Read Only
"gAMA" 0x67414d41 Leaf UINT32   1 FALSE

Primary Chromaticities Chunk Metadata PNG Level

Name ID Type Value Type Value Value Length Read Only
"cHRM" 0x6348524d Tree        

Primary Chromaticities Chunk Level

Name ID Type Value Type Value Value Length Read Only
"WhitePoint" 0x6348524d Tree        
"x" 0x6348524d Leaf UINT32   1 FALSE
"y" 0x6348524d Leaf UINT32   1 FALSE
"Red" 0x6348524d Tree        
"x" 0x6348524d Leaf UINT32   1 FALSE
"y" 0x6348524d Leaf UINT32   1 FALSE
"Green" 0x6348524d Tree        
"x" 0x6348524d Leaf UINT32   1 FALSE
"y" 0x6348524d Leaf UINT32   1 FALSE
"Blue" 0x6348524d Tree        
"x" 0x6348524d Leaf UINT32   1 FALSE
"y" 0x6348524d Leaf UINT32   1 FALSE

sRGB Chunk Metadata PNG Level

Name ID Type Value Type Value Value Length Read Only
"sRGB" 0x73524742 Leaf UINT32   1 FALSE

ICC Profile Chunk Metadata PNG Level

Name ID Type Value Type Value Value Length Read Only
"iCCP" 0x70485973 Tree        

ICC Profile Chunk Level

Name ID Type Value Type Value Value Length Read Only
"ProfileName" 0x70485973 Leaf STRING   Variable FALSE
"ProfileData" 0x70485973 Leaf RAW_DATA   Variable FALSE

Background Chunk Metadata PNG Level

Name ID Type Value Type Value Value Length Read Only
"bKGD" 0x624b4744 Leaf UINT8 or UINT16   Variable FALSE

Significant Bits Chunk Metadata PNG Level

Name ID Type Value Type Value Value Length Read Only
"sBIT" 0x73424954 Leaf UINT8   Variable FALSE

Suggested Palette Chunk Metadata PNG Level

Name ID Type Value Type Value Value Length Read Only
"sPLT" 0x73504c54 Tree        

Suggested Palette Chunk Level

Name ID Type Value Type Value Value Length Read Only
"PaletteName" 0x73504c54 Leaf STRING   Variable TRUE
"SampleDepth" 0x73504c54 Leaf UINT8   1 FALSE
"PaletteEntryCount" 0x73504c54 Leaf UINT16 <N> 1 FALSE
Palette entry level 0 <Entry No.>

 
Tree        
...
Palette entry level n <Entry No.>

 
Tree        

Palette Entry Level

Name ID Type Value Type Value Value Length Read Only
"Red" <Entry No.> Leaf UINT8 or UINT16   1 FALSE
"Green" <Entry No.> Leaf UINT8 or UINT16   1 FALSE
"Blue" <Entry No.> Leaf UINT8 or UINT16   1 FALSE
"Alpha" <Entry No.> Leaf UINT8 or UINT16   1 FALSE
"Frequency" <Entry No.> Leaf UINT16   1 FALSE

Palette Histogram Chunk Metadata PNG Level

Name ID Type Value Type Value Value Length Read Only
"hIST" 0x68495354 Leaf UINT16   Variable FALSE

Modified Time Chunk Metadata PNG Level

Name ID Type Value Type Value Value Length Read Only
"tIME" 0x74494d45 Tree        

Modified Time Chunk Level

Name ID Type Value Type Value Value Length Read Only
"Year" 0x74494d45 Leaf UINT16   1 FALSE
"Month" 0x74494d45 Leaf UINT8   1 FALSE
"Day" 0x74494d45 Leaf UINT8   1 FALSE
"Hour" 0x74494d45 Leaf UINT8   1 FALSE
"Minute" 0x74494d45 Leaf UINT8   1 FALSE
"Second" 0x74494d45 Leaf UINT8   1 FALSE

Text Chunk Metadata PNG Level

Name ID Type Value Type Value Value Length Read Only
"tEXt" 0x74455874 Tree        

Text Chunk Level

Name ID Type Value Type Value Value Length Read Only
"Keyword" 0x74455874 Leaf STRING   Variable FALSE
"Text" 0x74455874 Leaf STRING   Variable FALSE

Compressed Textual Data Chunk Metadata PNG Level

Name ID Type Value Type Value Value Length Read Only
"zTXt" 0x7a545874 Tree        

Compressed Textual Data Chunk Level

Name ID Type Value Type Value Value Length Read Only
"Keyword" 0x7a545874 Leaf STRING   Variable FALSE
"CompressionMethod" 0x7a545874 Leaf UINT8   1 FALSE
"Text" 0x7a545874 Leaf STRING   Variable FALSE

International Textual Data Chunk Metadata PNG Level

Name ID Type Value Type Value Value Length Read Only
"zTXt" 0x69545874 Tree        

International Textual Data Chunk Level

Name ID Type Value Type Value Value Length Read Only
"Keyword" 0x69545874 Leaf STRING   Variable FALSE
"CompressionFlag" 0x69545874 Leaf BOOL      
"CompressionMethod" 0x69545874 Leaf UINT8   1 FALSE
"LanguageTag" 0x69545874 Leaf STRING      
"TranslatedKeyword" 0x69545874 Leaf RAW_DATA      
"Text" 0x69545874 Leaf RAW_DATA   Variable FALSE

Calibration of Pixel Values Chunk Metadata PNG Level

Name ID Type Value Type Value Value Length Read Only
"pCAL" 0x7043414c Tree        

Calibration of Pixel Values Chunk Level

Name ID Type Value Type Value Value Length Read Only
"CalibrationName" 0x7043414c Leaf STRING   Variable FALSE
"OriginalZero(x0)" 0x7043414c Leaf INT32   1 FALSE
"OriginalMax(x1)" 0x7043414c Leaf INT32   1 FALSE
"EquationType" 0x7043414c Leaf UINT8   1 FALSE
"NumberOfParameters" 0x7043414c Leaf UINT8 <N> Variable FALSE
"UnitName" 0x7043414c Leaf STRING   Variable FALSE
"CalibrationParameter" 0 Leaf STRING   Variable FALSE
...
"CalibrationParameter" <N> - 1 Leaf STRING   Variable FALSE

Physical Scale Chunk Metadata PNG Level

Name ID Type Value Type Value Value Length Read Only
"sCAL" 0x7343414c Tree        

Physical Scale Chunk Level

Name ID Type Value Type Value Value Length Read Only
"UnitSpecifier" 0x7343414c Leaf UINT8   1 FALSE
"PixelWidth" 0x7343414c Leaf STRING   Variable FALSE
"PixelHeigt" 0x7343414c Leaf STRING   Variable FALSE

GIF Application Extension Chunk Metadata PNG Level

Name ID Type Value Type Value Value Length Read Only
"gIFx" 0x67494678 Tree        

GIF Application Extension Chunk Level

Name ID Type Value Type Value Value Length Read Only
"ApplicationIdentifier" 0x67494678 Leaf STRING   Variable FALSE
"AuthenticationCode" 0x67494678 Leaf UINT8   1 FALSE
"ApplicationData" 0x67494678 Leaf RAW_DATA   Variable FALSE

GIF Graphic Control Extension Chunk Metadata PNG Level

Name ID Type Value Type Value Value Length Read Only
"gIFg" 0x67494674 Tree        

GIF Graphic Control Extension Chunk Level

Name ID Type Value Type Value Value Length Read Only
"DisposalMethod" 0x67494674 Leaf UINT8   1 FALSE
"UserInputFlag" 0x67494674 Leaf UINT8   1 FALSE
"DelayTime" 0x67494674 Leaf UINT16   1 FALSE

Image Offset Chunk Metadata PNG Level

Name ID Type Value Type Value Value Length Read Only
"oFFs" 0x6f464673 Tree        

Image Offset Chunk Level

Name ID Type Value Type Value Value Length Read Only
"XPosition" 0x6f464673 Leaf UINT32   1 FALSE
"YPosition" 0x6f464673 Leaf UINT32   1 FALSE
"UnitSpecifier" 0x6f464673 Leaf UINT8   1 FALSE

The Rest Chunk Metadata

The rest chunk data are passed as raw data.

PNG Level

Name ID Type Value Type Value Value Length Read Only
<Chunk Name> <Chunk ID> Leaf RAW_DATA   Variable FALSE

<Chunk Name> is a string representation of the chunk type value.

<Chunk ID> is a binary representation of the chunk type value.