chiark / gitweb /
Explicitly set RGB colourspace in icon.pl's use of convert.
authorSimon Tatham <anakin@pobox.com>
Sun, 24 Apr 2016 06:30:20 +0000 (07:30 +0100)
committerSimon Tatham <anakin@pobox.com>
Sun, 24 Apr 2016 06:30:20 +0000 (07:30 +0100)
This is that annoying feature of up-to-date 'convert' in which
converting to or from a PNG file defaults to returning RGB values that
have been 'helpfully' gamma-corrected (or some such) from the exact
data stored in the source file to some nonsense you didn't want.

Usually the worst this causes is slightly washed-out looking graphics,
but in this case, since my entire aim was to squash the image into a
specific set of exact RGB values so as to turn it into a paletted
Windows icon file, it caused an actual build failure when the next
loop in icon.pl couldn't find the gamma-corrected values in its
expected palette map, and no wonder.

icons/icon.pl

index d0c5a8e03e8ffa731dafb1f9f0a2731b4c72b487..fcb1aa3e2cb754c413aaef9e626526e442ab2b3f 100755 (executable)
@@ -127,7 +127,7 @@ sub readicon {
     # point, to avoid having to do it ourselves (.BMP and hence
     # .ICO are bottom-up).
     my $data = [];
-    open IDATA, "convert -flip -depth 8 $filename rgba:- |";
+    open IDATA, "convert -set colorspace sRGB -flip -depth 8 $filename rgba:- |";
     push @$data, $rgb while (read IDATA,$rgb,4,0) == 4;
     close IDATA;
     # Check we have the right amount of data.