Test images

Still images

File circle-trns-after-plte.png

An opaque blue circle on a transparent green background.

It is of color type 2 (PNG_COLOR_TYPE_RGB) and has a tRNS chunk after a PLTE chunk.

File circle-trns-before-plte.png

An opaque blue circle on a transparent green background.

It is of color type 2 (PNG_COLOR_TYPE_RGB) and has a tRNS chunk before a PLTE chunk. Since the PNG specification version 1.2 says “the tRNS chunk [...] must follow the PLTE chunk, if any”, libpng considers the tRNS chunk as invalid and ignores it.

File draw_points.png

Source: Generated with ImageMagick's convert command:

  convert -size 3x1 xc:red -alpha on -fill '#00F8' \
          -draw 'point 1,0' \
          -draw 'color 2,0 point' -scale 33x33 draw_points.png

It is of color type 3 (PNG_COLOR_TYPE_PALETTE) and has a tRNS chunk.

Files kodim*

File kodim03_yuv420_8bpc.avif

License: released by the Eastman Kodak Company for unrestricted usage

File kodim03_grayscale_gamma1.6.png

License: released by the Eastman Kodak Company for unrestricted usage

It is kodim03_yuv420_8bpc.avif converted to grayscale and tagged as Gamma 1.6 gAMA PNG chunk.

File kodim03_grayscale_gamma1.6-reference.png

License: released by the Eastman Kodak Company for unrestricted usage

It is kodim03_grayscale_gamma1.6.png converted into sRGB colorspace by Chrome using “Capture Node Screenshot” in DevTools.

File kodim23_yuv420_8bpc.avif

License: released by the Eastman Kodak Company for unrestricted usage

Source: http://r0k.us/graphics/kodak/

Files cosmos*

File cosmos1650_yuv444_10bpc_p3pq.avif

License: Creative Commons Attribution license (reuse allowed)

Source: “Cosmos Laundromat” movie (frame at around 1 minute past the beginning)

Files with high bit depth per channel

File weld_16bit.png

License: “Irrevocable, nonexclusive, worldwide copyright license to download, copy, modify, distribute, perform, and use raw files from Signature Edits for free, including for commercial purposes, without permission from or attributing the photographer or Signature Edits.”

Source: Picture from https://www.signatureedits.com/free-raw-photos/, rescaled, modified color balance and converted with GIMP+Darktable to 16b PNG, metadata removed with exiftool -All=.

Metadata

The structure can be displayed using exiv2 -pS <file>.

File dog_exif_extended_xmp_icc.jpg

License: same as libavif

Source: Personal photo.

addressmarkerlengthdata
00xffd8 SOI
20xffe1 APP1884Exif..II*......................
8880xffe1 APP1353http://ns.adobe.com/xap/1.0/.<x:
12430xffe1 APP132417http://ns.adobe.com/xmp/extensio
336620xffe0 APP016JFIF.........
...
338180xffe2 APP2612ICC_PROFILE......T........mntrRG chunk 1/1
...

File paris_exif_xmp_icc.jpg

License: same as libavif

Source: Personal photo edited with Gimp 2.10.

addressmarkerlengthdata
00xffd8 SOI
20xffe0 APP016JFIF.....,.,.
200xffe1 APP11134Exif..II*......................
11560xffe1 APP13929http://ns.adobe.com/xap/1.0/.<?x
50870xffe2 APP2612ICC_PROFILE......T........mntrRG chunk 1/1
...

File paris_extended_xmp.jpg

License: same as libavif

Source: Metadata was extracted from paris_exif_xmp_icc.jpg with exiftool -tagsfromfile paris_exif_xmp_icc.jpg paris_exif_xmp_icc.xmp. The text of the first book of De finibus bonorum et malorum was manually inserted in that file under the tag xmp:Label and the second book under the tag xmp:Nickname (any < or > removed to avoid conflicts with XMP). The file was reconstructed with exiftool -tagsfromfile paris_exif_xmp_icc.xmp -Exif= -icc_profile= paris_exif_xmp_icc.jpg -o paris_extended_xmp.jpg. The goal is to have a large XMP blob so that it can only be stored as multiple extended XMP chunks.

addressmarkerlengthdata
00xffd8 SOI
20xffe0 APP016JFIF.....,.,.
200xffe1 APP15531http://ns.adobe.com/xap/1.0/.<?x
55530xffe1 APP165535http://ns.adobe.com/xmp/extensio
710900xffe1 APP165535http://ns.adobe.com/xmp/extensio
1366270xffe1 APP14791http://ns.adobe.com/xmp/extensio
...

File paris_xmp_trailing_null.jpg

License: same as libavif

Source: paris_exif_xmp_icc.jpg loaded with avifReadImage(), stripped of ICC and Exif, a zero byte appended to XMP, then written with avifJPEGWrite() with quality 0 (without calling avifImageFixXMP()).

addressmarkerlengthdata
00xffd8 SOI
20xffe0 APP016JFIF.........
200xffe1 APP13930http://ns.adobe.com/xap/1.0/.<?x
...

File paris_icc_exif_xmp.png

License: same as libavif

Source: paris_exif_xmp_icc.jpg loaded with avifReadImage() then written with avifPNGWrite() (modified to output metadata this way).

addressmarkerlengthdata
8IHDR13
33iCCP386libavif..(.u..+DQ..?3...E.....
431zTXt631Raw profile type exif..H...[..
1074zTXt1076Raw profile type xmp..X..YQ..8
2162IDAT...
160456IEND0

File paris_icc_exif_xmp_at_end.png