PNG Tags
Tags extracted from PNG images. See http://www.libpng.org/pub/png/spec/1.2/ for the official PNG 1.2 specification.
According to the specification, a PNG file should end at the IEND chunk, however ExifTool will preserve any data found after this when writing unless it is specifically deleted with -Trailer:All=. When reading, a minor warning is issued if this trailer exists, and ExifTool will attempt to parse this data as additional PNG chunks.
Also according to the PNG specification, there is no restriction on the location of -type chunks ( , zTXt and iTXt). However, certain utilities (including some Apple and Adobe utilities) won't read the XMP iTXt chunk if it comes after the IDAT chunk, and at least one utility won't read other chunks here. For this reason, when writing, ExifTool 11.63 and later create new chunks (including XMP) before IDAT, and move existing chunks to before IDAT.
The PNG format contains CRC checksums that are validated when reading with either the Verbose or Validate option. When writing, these checksums are validated by default, but the FastScan option may be used to bypass this check if speed is more of a concern.
| Tag ID
| Tag Name
| Writable
| Values / Notes
|
| 'IHDR'
| ImageHeader
| -
| --> PNG ImageHeader Tags
|
| 'PLTE'
| Palette
| no
|
|
| 'acTL'
| AnimationControl
| -
| --> PNG AnimationControl Tags
|
| 'bKGD'
| BackgroundColor
| no
|
|
| 'cHRM'
| PrimaryChromaticities
| -
| --> PNG PrimaryChromaticities Tags
|
| 'dSIG'
| DigitalSignature
| no
|
|
| 'eXIf'
| eXIf
| -
| --> EXIF Tags
(this is where ExifTool will create new EXIF)
|
| 'fRAc'
| FractalParameters
| no
|
|
| 'gAMA'
| Gamma
| no
| (ExifTool reports the gamma for decoding the image, which is consistent with the EXIF convention, but is the inverse of the stored encoding gamma)
|
| 'gIFg'
| GIFGraphicControlExtension
| no
|
|
| 'gIFt'
| GIFPlain Extension
| no
|
|
| 'gIFx'
| GIFApplicationExtension
| no
|
|
| 'hIST'
| PaletteHistogram
| no
|
|
| 'iCCP'
| ICC_Profile
| -
| --> ICC_Profile Tags
(this is where ExifTool will write a new ICC_Profile)
|
| 'iCCP-name'
| ProfileName
| no
| (not a real tag ID, this tag represents the iCCP profile name)
|
| 'iDOT'
| AppleDataOffsets
| no
|
|
| 'iTXt'
| International
| -
| --> PNG ualData Tags
|
| 'oFFs'
| ImageOffset
| no
|
|
| 'pCAL'
| PixelCalibration
| no
|
|
| 'pHYs'
| PhysicalPixel
| -
| --> PNG PhysicalPixel Tags
|
| 'sBIT'
| SignificantBits
| no
|
|
| 'sCAL'
| SubjectScale
| -
| --> PNG SubjectScale Tags
|
| 'sPLT'
| SuggestedPalette
| no
|
|
| 'sRGB'
| SRGBRendering
| no
| 0 = Perceptual
1 = Relative Colorimetric
2 = Saturation
3 = Absolute Colorimetric
|
| 'sTER'
| StereoImage
| -
| --> PNG StereoImage Tags
|
| ' '
| ualData
| -
| --> PNG ualData Tags
|
| 'tIME'
| ModifyDate
| yes
|
|
| 'tRNS'
| Transparency
| no
|
|
| 'tXMP'
| XMP
| -
| --> XMP Tags
(obsolete location specified by a September 2001 XMP draft)
|
| 'vpAg'
| VirtualPage
| -
| --> PNG VirtualPage Tags
|
| 'zTXt'
| Compressed
| -
| --> PNG ualData Tags
|
| 'zxIf'
| zxIf
| -
| --> EXIF Tags
(a once-proposed chunk for compressed EXIF) | |
| Index1
| Tag Name
| Writable
| Values / Notes
|
| 0
| Image
| no
|
|
| 4
| Image
| no
|
|
| 8
| BitDepth
| no
|
|
| 9
| ColorType
| no
| 0 = Grayscale
2 = RGB
3 = Palette
4 = Grayscale with Alpha
6 = RGB with Alpha
|
| 10
| Compression
| no
| 0 = Deflate/Inflate
|
| 11
| Filter
| no
| 0 = Adaptive
|
| 12
| Interlace
| no
| 0 = Noninterlaced
1 = Adam7 Interlace | |
Tags found in the Animation Control chunk. See https://wiki.mozilla.org/APNG_Specification for details.
| Index4
| Tag Name
| Writable
| Values / Notes
|
| 0
| AnimationFrames
| no
|
|
| 1
| AnimationPlays
| no
| | |
| Index4
| Tag Name
| Writable
| Values / Notes
|
| 0
| WhitePointX
| no
|
|
| 1
| WhitePointY
| no
|
|
| 2
| RedX
| no
|
|
| 3
| RedY
| no
|
|
| 4
| GreenX
| no
|
|
| 5
| GreenY
| no
|
|
| 6
| BlueX
| no
|
|
| 7
| BlueY
| no
| | |
The PNG ualData format allows arbitrary tag names to be used. The tags listed below are the only ones that can be written (unless new user-defined tags are added via the configuration file), however ExifTool will extract any other ualData tags that are found. All ualData tags (including tags not listed below) are removed when deleting all PNG tags.
These tags may be stored as , zTXt or iTXt chunks in the PNG image. By default ExifTool writes new string-value tags as as uncompressed , or compressed zTXt if the Compress (-z) option is used and Compress::Zlib is available. Alternate language tags and values containing special characters (unless the Latin character set is used) are written as iTXt, and compressed if the Compress option is used and Compress::Zlib is available. Raw profile information is always created as compressed zTXt if Compress::Zlib is available, or otherwise. Standard XMP is written as uncompressed iTXt.
Alternate languages are accessed by suffixing the tag name with a '-', followed by an RFC 3066 language code (eg. "PNG:Comment-fr", or "Title-en-US"). See http://www.ietf.org/rfc/rfc3066.txt for the RFC 3066 specification.
Some of the tags below are not registered as part of the PNG specification, but are included here because they are generated by other software such as ImageMagick.
| Tag ID
| Tag Name
| Writable
| Values / Notes
|
| 'Artist'
| Artist
| string
| (unregistered)
|
| 'Author'
| Author
| string
|
|
| 'Collection'
| Collection
| string
|
|
| 'Comment'
| Comment
| string
|
|
| 'Copyright'
| Copyright
| string
|
|
| 'Creation Time'
| CreationTime
| string
| (stored in RFC-1123 format and converted to/from EXIF format by ExifTool)
|
| 'Description'
| Description
| string
|
|
| 'Disclaimer'
| Disclaimer
| string
|
|
| 'Document'
| Document
| string
| (unregistered)
|
| 'Label'
| Label
| string
| (unregistered)
|
| 'Make'
| Make
| string
| (unregistered)
|
| 'Model'
| Model
| string
| (unregistered)
|
| 'Raw profile type 8bim'
| Photoshop_Profile
| -
| --> Photoshop Tags
(unregistered)
|
| 'Raw profile type APP1'
| APP1_Profile
| -
| --> EXIF Tags
--> XMP Tags
(unregistered)
|
| 'Raw profile type exif'
| EXIF_Profile
| -
| --> EXIF Tags
(unregistered)
|
| 'Raw profile type icc'
| ICC_Profile
| -
| --> ICC_Profile Tags
(unregistered)
|
| 'Raw profile type icm'
| ICC_Profile
| -
| --> ICC_Profile Tags
(unregistered)
|
| 'Raw profile type iptc'
| IPTC_Profile
| -
| --> Photoshop Tags
(unregistered. May be either IPTC IIM or Photoshop IRB format. This is where ExifTool will add new IPTC, inside a Photoshop IRB container)
|
| 'Raw profile type xmp'
| XMP_Profile
| -
| --> XMP Tags
(unregistered)
|
| 'Software'
| Software
| string
|
|
| 'Source'
| Source
| string
|
|
| 'TimeStamp'
| TimeStamp
| string
| (unregistered)
|
| 'Title'
| Title
| string
|
|
| 'URL'
| URL
| string
| (unregistered)
|
| 'Warning'
| PNGWarning
| string
|
|
| 'XML:com.adobe.xmp'
| XMP
| -
| --> XMP Tags
(unregistered, but this is the location according to the June 2002 or later XMP specification, and is where ExifTool will add a new XMP chunk if the image didn't already contain XMP)
|
| 'create-date'
| CreateDate
| string
| (unregistered)
|
| 'modify-date'
| ModDate
| string
| (unregistered) | |
These tags are found in the PNG pHYs chunk and belong to the PNG-pHYs family 1 group. They are all created together with default values if necessary when any of these tags is written, and may only be deleted as a group.
| Index1
| Tag Name
| Writable
| Values / Notes
|
| 0
| PixelsPerUnitX
| int32u
| (default 2834)
|
| 4
| PixelsPerUnitY
| int32u
| (default 2834)
|
| 8
| PixelUnits
| int8u
| (default meters)
0 = Unknown
1 = meters | |
| Index1
| Tag Name
| Writable
| Values / Notes
|
| 0
| SubjectUnits
| no
| 1 = meters
2 = radians
|
| 1
| SubjectPixel
| no
|
|
| 2
| SubjectPixel
| no
| | |
| Index1
| Tag Name
| Writable
| Values / Notes
|
| 0
| StereoMode
| no
| 0 = Cross-fuse Layout
1 = Diverging-fuse Layout | |
| Index4
| Tag Name
| Writable
| Values / Notes
|
| 0
| VirtualImage
| no
|
|
| 1
| VirtualImage
| no
|
|
| 2
| VirtualPageUnits
| no
| | |
(This document generated automatically by Image::ExifTool::BuildTagLookup)
Last revised Sep 11, 2020
<-- ExifTool Tag Names