- From: Chris Lilley <chris@w3.org>
- Date: Wed, 8 Jan 2025 15:17:26 -0500
- To: "public-png@w3.org" <public-png@w3.org>
- Message-ID: <b23d0286-9c56-4ae1-a096-440b2fa93c13@w3.org>
I forked a copy of the latest (3.0.3) pngcheck onto GitHub [1]. I then hacked in some cICP support [2]. (pngcheck itself is old and crufty, with an if ... else if chain that is like 10 pages long. My additions proudly maintain that same lack of software engineering). It checks: 1. For non-zero matrix values 2. For Full range flag values other than 0 or 1 3. For the big block of reserved primaries 4. For the big block of reserved transfer functions 5. For cICP that is not 4 bytes long It then does pairwise checks (if primaries is this and transfer is that then it must be foo) for: 1. sRGB, sRGB-linear and BT.709 2. BT.2020, BT.2021-HLG and BT.2021-PQ 3. DCI-P3 and Display P3 It does not currently check in detail for the historical ones, it just gives a generic unsupported message. I guess I will add those later. This is not any official release just a quick fork-and-hack because I found the lack of cICP support so irritating. Sample non-verbose output: |chris@SuperNomad:/mnt/c/Users/chris/Documents/PNG/CICP$ pngcheck -c test_pattern-HLG.png test_pattern-HLG.png cICP Rec. ITU-R BT.2100-2 hybrid log-gamma (HLG) system OK: test_pattern-HLG.png (1024x1024, 48-bit RGB, non-interlaced, 99.8%).| Sample verbose outputs: |chris@SuperNomad:/mnt/c/Users/chris/Documents/PNG/CICP$ pngcheck -c -v cICP-and-iCCP.png File: cICP-and-iCCP.png (2745 bytes) chunk IHDR at offset 0x0000c, length 13 128 x 64 image, 32-bit RGB+alpha, non-interlaced chunk iCCP at offset 0x00025, length 2509 profile name = ICC profile, compression method = 0 (deflate) compressed profile = 2496 bytes chunk cICP at offset 0x009fe, length 4 : Display P3 White x = 0.3127 y = 0.329, Red x = 0.68 y = 0.32 Green x = 0.265 y = 0.69, Blue x = 0.15 y = 0.06 Full range chunk IDAT at offset 0x00a0e, length 151 zlib: deflated, 32K window, default compression chunk IEND at offset 0x00ab1, length 0 No errors detected in cICP-and-iCCP.png (5 chunks, 91.6% compression). ||chris@SuperNomad:/mnt/c/Users/chris/Documents/PNG/CICP$ pngcheck -c -v test_pattern-HLG.png File: test_pattern-HLG.png (12698 bytes) chunk IHDR at offset 0x0000c, length 13 1024 x 1024 image, 48-bit RGB, non-interlaced chunk iCCP at offset 0x00025, length 2866 profile name = 1, compression method = 0 (deflate) compressed profile = 2863 bytes chunk cHRM at offset 0x00b63, length 32 White x = 0.3127 y = 0.329, Red x = 0.708 y = 0.292 Green x = 0.17 y = 0.797, Blue x = 0.131 y = 0.046 chunk cICP at offset 0x00b8f, length 4 : Rec. ITU-R BT.2100-2 hybrid log-gamma (HLG) system White x = 0.3127 y = 0.329, Red x = 0.708 y = 0.292 Green x = 0.17 y = 0.797, Blue x = 0.131 y = 0.046 Full range chunk IDAT at offset 0x00b9f, length 8192 zlib: deflated, 32K window, default compression chunk IDAT at offset 0x02bab, length 1499 chunk IEND at offset 0x03192, length 0 No errors detected in test_pattern-HLG.png (7 chunks, 99.8% compression). ||chris@SuperNomad:/mnt/c/Users/chris/Documents/PNG/CICP$ pngcheck -c -v test_pattern-PQ.png File: test_pattern-PQ.png (12033 bytes) chunk IHDR at offset 0x0000c, length 13 1024 x 1024 image, 48-bit RGB, non-interlaced chunk iCCP at offset 0x00025, length 2181 profile name = 1, compression method = 0 (deflate) compressed profile = 2178 bytes chunk cHRM at offset 0x008b6, length 32 White x = 0.3127 y = 0.329, Red x = 0.708 y = 0.292 Green x = 0.17 y = 0.797, Blue x = 0.131 y = 0.046 chunk cICP at offset 0x008e2, length 4 : Rec. ITU-R BT.2100-2 perceptual quantization (PQ) system White x = 0.3127 y = 0.329, Red x = 0.708 y = 0.292 Green x = 0.17 y = 0.797, Blue x = 0.131 y = 0.046 Full range chunk cLLi at offset 0x008f2, length 8 Old version of CLLI, do not use ERRORS DETECTED in test_pattern-PQ.png | |I built this on Ubuntu Linux running on WSL2 under Windows 11, ie what I have. Utterly untested on any other system.| || [1] https://github.com/svgeesus/pngcheck [2] https://github.com/svgeesus/pngcheck/pull/1 -- Chris Lilley @svgeesus Technical Director @ W3C W3C Strategy Team, Core Web Design W3C Architecture & Technology Team, Core Web & Media
Received on Wednesday, 8 January 2025 20:17:30 UTC