Package: imagemagick-7.q16
Version: 8:7.1.1.43+dfsg1-1+deb13u5
Control: affects -1 pngtools pngcheck
Magick's attempt to set the background in a PNG file with title and author
chunks mutilates these chunks. On the resulting file, pngcheck+pnginfo together
print inconclusive results.
First, grab https://www.debian.org/logos/openlogo-nd-75.png and set its author
and title:
$ pngcrush -brute -iTXt b Author de Autor "Max Mustermann" -iTXt b Title de Titel
"Debian Logo" openlogo-nd-75.png openlogo-nd-75.with_author_title.png
Recompressing IDAT chunks in openlogo-nd-75.png to
openlogo-nd-75.with_author_title.png
Total length of data found in critical chunks = 1044
Best pngcrush method = 4 (ws 13 fm 0 zl 9 zs 1) = 1044
CPU time decode 0.054039, encode 0.261401, other 0.032897, total 0.404500 sec
$ pnginfo openlogo-nd-75.with_author_title.png
openlogo-nd-75.with_author_title.png...
Image Width: 75 Image Length: 92
Bitdepth (Bits/Sample): 8
Channels (Samples/Pixel): 1
Pixel depth (Pixel Depth): 8
Colour Type (Photometric Interpretation): PALETTED COLOUR (0 colours, 0
transparent)
Image filter: Single row per byte filter
Interlacing: No interlacing
Compression Scheme: Deflate method 8, 32k window
Resolution: 2834, 2834 (pixels per meter)
FillOrder: msb-to-lsb
Byte Order: Network (Big Endian)
Number of text strings: 2
Author (iTXt uncompressed): Max Mustermann
Title (iTXt uncompressed): Debian Logo
$ pngcheck -v openlogo-nd-75.with_author_title.png
zlib warning: different version (expected 1.2.13, using 1.3.1)
File: openlogo-nd-75.with_author_title.png (1181 bytes)
chunk IHDR at offset 0x0000c, length 13
75 x 92 image, 8-bit palette, non-interlaced
chunk PLTE at offset 0x00025, length 51: 17 palette entries
chunk bKGD at offset 0x00064, length 1
index = 0
chunk pHYs at offset 0x00071, length 9: 2834x2834 pixels/meter (72 dpi)
chunk tIME at offset 0x00086, length 7: 2 Jan 2002 22:07:57 UTC
chunk iTXt at offset 0x00099, length 32, keyword: Author
uncompressed, language tag = de
21 bytes of translated keyword and UTF-8 text
chunk iTXt at offset 0x000c5, length 28, keyword: Title
uncompressed, language tag = de
18 bytes of translated keyword and UTF-8 text
chunk IDAT at offset 0x000ed, length 924
zlib: deflated, 8K window, maximum compression
chunk IEND at offset 0x00495, length 0
No errors detected in openlogo-nd-75.with_author_title.png (9 chunks, 82.9%
compression).
$ exiftool -a -G openlogo-nd-75.with_author_title.png|egrep
"^\[(PNG|ExifTool)\]"
[ExifTool] ExifTool Version Number : 13.25
[PNG] Image Width : 75
[PNG] Image Height : 92
[PNG] Bit Depth : 8
[PNG] Color Type : Palette
[PNG] Compression : Deflate/Inflate
[PNG] Filter : Adaptive
[PNG] Interlace : Noninterlaced
[PNG] Palette : (Binary data 51 bytes, use -b
option to extract)
[PNG] Background Color : 0
[PNG] Pixels Per Unit X : 2834
[PNG] Pixels Per Unit Y : 2834
[PNG] Pixel Units : meters
[PNG] Modify Date : 2002:01:02 22:07:57
[PNG] Author (de) : Max Mustermann
[PNG] Title (de) : Debian Logo
All this looks good so far (up to https://bugs.debian.org/1115281).
Second, set the background color and check the result:
$ magick openlogo-nd-75.with_author_title.png -background white
openlogo-nd-75.with_author_title.with_background.png
$ pnginfo openlogo-nd-75.with_author_title.with_background.png
openlogo-nd-75.with_author_title.with_background.png...
Image Width: 75 Image Length: 92
Bitdepth (Bits/Sample): 8
Channels (Samples/Pixel): 1
Pixel depth (Pixel Depth): 8
Colour Type (Photometric Interpretation): PALETTED COLOUR (0 colours, 0
transparent)
Image filter: Single row per byte filter
Interlacing: No interlacing
Compression Scheme: Deflate method 8, 32k window
Resolution: 2834, 2834 (pixels per meter)
FillOrder: msb-to-lsb
Byte Order: Network (Big Endian)
Number of text strings: 0
$ pngcheck -v openlogo-nd-75.with_author_title.with_background.png
zlib warning: different version (expected 1.2.13, using 1.3.1)
File: openlogo-nd-75.with_author_title.with_background.png (1387 bytes)
chunk IHDR at offset 0x0000c, length 13
75 x 92 image, 8-bit palette, non-interlaced
chunk cHRM at offset 0x00025, length 32
White x = 0.3127 y = 0.329, Red x = 0.64 y = 0.33
Green x = 0.3 y = 0.6, Blue x = 0.15 y = 0.06
chunk PLTE at offset 0x00051, length 51: 17 palette entries
chunk bKGD at offset 0x00090, length 1
index = 0
chunk pHYs at offset 0x0009d, length 9: 2834x2834 pixels/meter (72 dpi)
chunk tIME at offset 0x000b2, length 7: 23 Feb 2026 00:43:43 UTC
chunk IDAT at offset 0x000c5, length 975
zlib: deflated, 8K window, maximum compression
chunk tEXt at offset 0x004a0, length 11, keyword: Author
chunk tEXt at offset 0x004b7, length 37, keyword: date:create
chunk tEXt at offset 0x004e8, length 37, keyword: date:modify
chunk tEXt at offset 0x00519, length 40, keyword: date:timestamp
chunk tEXt at offset 0x0054d, length 10, keyword: Title
chunk IEND at offset 0x00563, length 0
No errors detected in openlogo-nd-75.with_author_title.with_background.png (13
chunks, 79.9% compression).
$ exiftool -a -G openlogo-nd-75.with_author_title.with_background.png |egrep
"^\[(PNG|ExifTool)\]"
[ExifTool] ExifTool Version Number : 13.25
[ExifTool] Warning : [minor] Text/EXIF chunk(s)
found after PNG IDAT (may be ignored by some readers) [x5]
[PNG] Image Width : 75
[PNG] Image Height : 92
[PNG] Bit Depth : 8
[PNG] Color Type : Palette
[PNG] Compression : Deflate/Inflate
[PNG] Filter : Adaptive
[PNG] Interlace : Noninterlaced
[PNG] White Point X : 0.3127
[PNG] White Point Y : 0.329
[PNG] Red X : 0.64
[PNG] Red Y : 0.33
[PNG] Green X : 0.3
[PNG] Green Y : 0.6
[PNG] Blue X : 0.15
[PNG] Blue Y : 0.06
[PNG] Palette : (Binary data 51 bytes, use -b
option to extract)
[PNG] Background Color : 0
[PNG] Pixels Per Unit X : 2834
[PNG] Pixels Per Unit Y : 2834
[PNG] Pixel Units : meters
[PNG] Modify Date : 2026:02:23 00:43:43
[PNG] Author : utor
[PNG] Datecreate : 2026-02-23T00:41:13+00:00
[PNG] Datemodify : 2026-02-23T00:41:13+00:00
[PNG] Datetimestamp : 2026-02-23T00:43:43+00:00
[PNG] Title : itel
Notice that pnginfo no longer reports the iTXt chunks. pngcheck reports tEXt
chunks instead. Exiftool reports the author and title, but the information
there is garbage: “utor” for the author and “itel” for the title. Moreover,
exiftool warns about Text/EXIF chunk(s) found after PNG IDAT.
We may try an alternative to `-background white`:
$ magick openlogo-nd-75.with_author_title.png -set png:bKGD "#FFFFFF"
openlogo-nd-75.with_author_title.with_bKGD.png
$ pnginfo openlogo-nd-75.with_author_title.with_bKGD.png
openlogo-nd-75.with_author_title.with_bKGD.png...
Image Width: 75 Image Length: 92
Bitdepth (Bits/Sample): 8
Channels (Samples/Pixel): 1
Pixel depth (Pixel Depth): 8
Colour Type (Photometric Interpretation): PALETTED COLOUR (0 colours, 0
transparent)
Image filter: Single row per byte filter
Interlacing: No interlacing
Compression Scheme: Deflate method 8, 32k window
Resolution: 2834, 2834 (pixels per meter)
FillOrder: msb-to-lsb
Byte Order: Network (Big Endian)
Number of text strings: 0
$ pngcheck -v openlogo-nd-75.with_author_title.with_bKGD.png
zlib warning: different version (expected 1.2.13, using 1.3.1)
File: openlogo-nd-75.with_author_title.with_bKGD.png (1387 bytes)
chunk IHDR at offset 0x0000c, length 13
75 x 92 image, 8-bit palette, non-interlaced
chunk cHRM at offset 0x00025, length 32
White x = 0.3127 y = 0.329, Red x = 0.64 y = 0.33
Green x = 0.3 y = 0.6, Blue x = 0.15 y = 0.06
chunk PLTE at offset 0x00051, length 51: 17 palette entries
chunk bKGD at offset 0x00090, length 1
index = 0
chunk pHYs at offset 0x0009d, length 9: 2834x2834 pixels/meter (72 dpi)
chunk tIME at offset 0x000b2, length 7: 23 Feb 2026 00:46:11 UTC
chunk IDAT at offset 0x000c5, length 975
zlib: deflated, 8K window, maximum compression
chunk tEXt at offset 0x004a0, length 11, keyword: Author
chunk tEXt at offset 0x004b7, length 37, keyword: date:create
chunk tEXt at offset 0x004e8, length 37, keyword: date:modify
chunk tEXt at offset 0x00519, length 40, keyword: date:timestamp
chunk tEXt at offset 0x0054d, length 10, keyword: Title
chunk IEND at offset 0x00563, length 0
No errors detected in openlogo-nd-75.with_author_title.with_bKGD.png (13
chunks, 79.9% compression).
$ exiftool -a -G openlogo-nd-75.with_author_title.with_bKGD.png |egrep
"^\[(PNG|ExifTool)\]"
[ExifTool] ExifTool Version Number : 13.25
[ExifTool] Warning : [minor] Text/EXIF chunk(s)
found after PNG IDAT (may be ignored by some readers) [x5]
[PNG] Image Width : 75
[PNG] Image Height : 92
[PNG] Bit Depth : 8
[PNG] Color Type : Palette
[PNG] Compression : Deflate/Inflate
[PNG] Filter : Adaptive
[PNG] Interlace : Noninterlaced
[PNG] White Point X : 0.3127
[PNG] White Point Y : 0.329
[PNG] Red X : 0.64
[PNG] Red Y : 0.33
[PNG] Green X : 0.3
[PNG] Green Y : 0.6
[PNG] Blue X : 0.15
[PNG] Blue Y : 0.06
[PNG] Palette : (Binary data 51 bytes, use -b
option to extract)
[PNG] Background Color : 0
[PNG] Pixels Per Unit X : 2834
[PNG] Pixels Per Unit Y : 2834
[PNG] Pixel Units : meters
[PNG] Modify Date : 2026:02:23 00:46:11
[PNG] Author : utor
[PNG] Datecreate : 2026-02-23T00:41:13+00:00
[PNG] Datemodify : 2026-02-23T00:41:13+00:00
[PNG] Datetimestamp : 2026-02-23T00:46:11+00:00
[PNG] Title : itel
As you see, the result is as bad as before: Author and Title are garbled.
Also notice that pnginfo doesn't show these tags at all, but pngcheck confirms
their presence (now as tEXt and no longer as iTXt). If the file is broken,
pngcheck should complain; otherwise pnginfo should show the tags.
Please fix all this.
In the whole toolchain, it seems to me that magick is the culprit; of course,
the maintainers may reassign if needed.
An aside: setting a bogus color via `-set png:bKGD` should throw an error (both
via a return code and on stderr), but it doesn't:
$ magick openlogo-nd-75.with_author_title.png -set png:bKGD "quite a stupid
background" garbage.png
$ echo $?
0
Gratefully,
Peter