ImageGear v26.3 - Updated
Developer Guide / File Formats and Compressions / File Formats / Metadata Structures / PNG Metadata Structure
In This Topic
    PNG Metadata Structure
    In This Topic

    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.