假设我用以下命令创建一个简单的PNG:
convert -size 1x1 canvas:red red.png下面是一个类似的图片(更大的尺寸)以供参考:

然后在其上运行命令identify。它告诉我图像的ColorSpace是sRGB,但在文件中似乎没有这方面的指示。实际上正在运行
$ hexdump -C red.png
00000000 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 |.PNG........IHDR|
00000010 00 00 00 01 00 00 00 01 01 03 00 00 00 25 db 56 |.............%.V|
00000020 ca 00 00 00 04 67 41 4d 41 00 00 b1 8f 0b fc 61 |.....gAMA......a|
00000030 05 00 00 00 20 63 48 52 4d 00 00 7a 26 00 00 80 |.... cHRM..z&...|
00000040 84 00 00 fa 00 00 00 80 e8 00 00 75 30 00 00 ea |...........u0...|
00000050 60 00 00 3a 98 00 00 17 70 9c ba 51 3c 00 00 00 |`..:....p..Q<...|
00000060 06 50 4c 54 45 ff 00 00 ff ff ff 41 1d 34 11 00 |.PLTE......A.4..|
00000070 00 00 01 62 4b 47 44 01 ff 02 2d de 00 00 00 07 |...bKGD...-.....|
00000080 74 49 4d 45 07 e5 01 0d 17 04 37 80 ef 04 02 00 |tIME......7.....|
00000090 00 00 0a 49 44 41 54 08 d7 63 60 00 00 00 02 00 |...IDAT..c`.....|
000000a0 01 e2 21 bc 33 00 00 00 25 74 45 58 74 64 61 74 |..!.3...%tEXtdat|
000000b0 65 3a 63 72 65 61 74 65 00 32 30 32 31 2d 30 31 |e:create.2021-01|
000000c0 2d 31 33 54 32 33 3a 30 34 3a 35 35 2b 30 30 3a |-13T23:04:55+00:|
000000d0 30 30 2d af d4 01 00 00 00 25 74 45 58 74 64 61 |00-......%tEXtda|
000000e0 74 65 3a 6d 6f 64 69 66 79 00 32 30 32 31 2d 30 |te:modify.2021-0|
000000f0 31 2d 31 33 54 32 33 3a 30 34 3a 35 35 2b 30 30 |1-13T23:04:55+00|
00000100 3a 30 30 5c f2 6c bd 00 00 00 00 49 45 4e 44 ae |:00\.l.....IEND.|
00000110 42 60 82 |B`.|
00000113据我所知没有提供线索。
我知道,识别不包含该信息的图像的颜色是一个非常困难的问题--请参阅查看颜色直方图( ColorSpace here )的一个建议的解决方案。
那么ImageMagick套件中的identify是如何确定这个镜像的ColorSpace的呢?
发布于 2021-01-14 17:20:43
常见但未标准化的是,假设没有嵌入或侧面的ICC简档或没有显式编码描述的图像是根据IEC 61966-2-1:1999,即sRGB规范来编码的。
发布于 2021-05-05 17:51:28
这只是ImageMagick中的一个错误。您可以使用exiftool检查是否存在sRGB +意图块。在这种情况下,不是。
Gamma 2.2不是sRGB。因此,ImageMagic在这里是错误的。这是维基百科上的一个常见问题,所有转换为PNG的SVG图像都有这个问题,而且会破坏颜色。请参阅:https://phabricator.wikimedia.org/T26768
我们将不得不对维基百科上的所有图片进行重新编码,因为我们使用了ImageMagick。叹一口气。
https://stackoverflow.com/questions/65713296
复制相似问题