我使用了如下形式的 identify 命令。
identify -verbose image.png
输出的部分内容是:
Colors: 8
Histogram:
49602: ( 49, 51, 39) #313327 srgb(49,51,39)
36492: ( 98,121,135) #627987 srgb(98,121,135)
21728: ( 98,182,240) #62B6F0 srgb(98,182,240)
39526: (121,131, 75) #79834B srgb(121,131,75)
34298: (165,171,147) #A5AB93 srgb(165,171,147)
29957: (185,200,226) #B9C8E2 srgb(185,200,226)
18767: (210,185, 67) #D2B943 srgb(210,185,67)
31774: (246, 69, 44) #F6452C srgb(246,69,44)
Colormap entries: 9
Colormap:
0: (121,131, 75) #79834B srgb(121,131,75)
1: ( 49, 51, 39) #313327 srgb(49,51,39)
2: (210,185, 67) #D2B943 srgb(210,185,67)
3: (165,171,147) #A5AB93 srgb(165,171,147)
4: (185,200,226) #B9C8E2 srgb(185,200,226)
5: ( 98,121,135) #627987 srgb(98,121,135)
6: ( 98,182,240) #62B6F0 srgb(98,182,240)
7: (246, 69, 44) #F6452C srgb(246,69,44)
8: (255,255,255) #FFFFFF white
我看到与Histogram加白色相同的颜色 但顺序不同的颜色也出现在colormap中。
这两者之间有什么不同?
第一行下 Histogram
:
49602: ( 49, 51, 39) #313327 srgb(49,51,39)
告诉您图像中有49,602个像素,颜色为。sRGB(49,51,39)
. 所以它是在告诉你每种颜色的出现频率,或者说出现频率。
下面的9条线 Colormap:
是 调色板 的形象。
我们来看第一行。
0: (121,131, 75) #79834B srgb(121,131,75)
这意味着,无论在哪里,颜色 srgb(121,131,75)
发生在图像中,我们只存储调色板的索引。0
在该位置,而不是颜色 121,131,75
. 这意味着我们只用一个字节来存储一个 0
而不是存储3个字节的RGB,这意味着我们节省了23的空间。它是一个 "查询表" 或 调色板.
调色板用空间换取色彩的准确性。一般来说,它们的大小是原始图像的13倍,但通常只能存储256种独特的颜色,而不是传统RGB图像的16,777,216种颜色。
为了好玩,让我们把这个平滑的灰度渐变和一些随机的噪声创建为传统的RGB888图像(它的大小为75kB)。
magick -size 40x600 gradient: \( xc: +noise random \) +append -rotate 90 PNG24:a.png
现在做同样的事情,但要遵守规定。图片魔术 来创建一个调色板图像(它的大小为25kB)。
magick -size 40x600 gradient: \( xc: +noise random \) +append -rotate 90 PNG8:a.png
有一个较长的解释和例子 此处.