如何获取图像的平均RGB值,每个值范围在0-255之间?例如"255, 255, 255"。
我运行此命令将图像缩小,它返回带有alpha通道的'rgba'值,有时还会给出文本颜色名称:
convert cat.png -resize 1x1\! -format "%[pixel:u]\n" info:
输出:
rgba(155,51,127,0.266087)
如何获取图像的平均RGB值,每个值范围在0-255之间?例如"255, 255, 255"。
我运行此命令将图像缩小,它返回带有alpha通道的'rgba'值,有时还会给出文本颜色名称:
convert cat.png -resize 1x1\! -format "%[pixel:u]\n" info:
输出:
rgba(155,51,127,0.266087)
我的回答有两个方面:
convert
视为“平均”颜色。convert
支持的特殊.txt
格式。这种文本格式枚举图像的所有像素,首先给出它的坐标($row,$column:
),然后以不同格式给出其RGB或CMYK值。以下命令涵盖了这两个方面:
convert cat.png -resize 1x1 out.txt
cat out.txt
如需直接在终端窗口中输出结果,您可以使用:
convert cat.png -resize 1x1 txt:-
示例输出:
convert p4.png -resize 1x1 txt:-
# ImageMagick pixel enumeration: 1,1,255,srgb
0,0: (189,185,184) #BDB9B8 srgb(189,185,184)
convert cat.png -resize 1x1\! \
-format "%[fx:int(255*r+.5)],%[fx:int(255*g+.5)],%[fx:int(255*b+.5)]" info:-
输出格式应该像这样:
155,51,127
这应该适用于ImageMagick 6.3.9.1以上版本。
.txt
更容易 :-) - Kurt Pfeifleconvert cat.png -scale 1x1\! -format '%[fx:int(255*r+.5)],%[fx:int(255*g+.5)],%[fx:int(255*b+.5)]' info:- | sed 's/,/\n/g' | xargs -L 1 printf "%x"
- Illya MoskvinImageMagick.IMagickColor<ushort> color;
using (ImageMagick.MagickImage image = new ImageMagick.MagickImage(file))
{
// Get average color
image.Resize(1, 1);
color = image.GetPixels().First().ToColor();
}
convert p4.png -resize 1x1 txt:- | grep -Po "#[[:xdigit:]]{6}"
,如果您喜欢小写字母,可以将其进一步传输到tr A-F a-f
。 - tremby