如何使用ImageMagick查找图像的平均颜色?

jar*_*ohe 8 imagemagick

如何获取图像平均颜色的RGB值,其中每个值为0-255?如"255,255,255"

我运行此命令缩小图像并返回带有alpha通道的'rgba'值,有时它会给出文本颜色名称:

convert cat.png -resize 1x1\! -format "%[pixel:u]\n" info:
Run Code Online (Sandbox Code Playgroud)

输出:

rgba(155,51,127,0.266087)
Run Code Online (Sandbox Code Playgroud)

Kur*_*fle 18

我的答案有两个方面:

  1. 将原始图像调整为1像素图像.然后,这个像素将具有ImageMagick所convert看到的"平均"颜色.
  2. 输出结果作为.txt支持的特殊格式convert.此文本格式枚举图像的所有像素,首先给出其坐标($row,$column:),然后是不同格式的RGB或CMYK值.

这是一个涵盖两个方面的命令:

convert cat.png -resize 1x1 out.txt
cat out.txt
Run Code Online (Sandbox Code Playgroud)

要直接在终端窗口中获​​取输出,您可以使用:

convert cat.png -resize 1x1 txt:-
Run Code Online (Sandbox Code Playgroud)

示例输出:

convert p4.png -resize 1x1 txt:-
  # ImageMagick pixel enumeration: 1,1,255,srgb
  0,0: (189,185,184)  #BDB9B8  srgb(189,185,184)
Run Code Online (Sandbox Code Playgroud)

  • 要一次性获取十六进制代码,请尝试“convert p4.png -resize 1x1 txt:- | grep -Po "#[[:xdigit:]]{6}"`,如果您喜欢小写,则进一步将其传输到 `tr AF af`。 (2认同)

小智 8

您可以执行以下操作以仅解析逗号分隔的RGB值.它也不会返回文本颜色名称.

convert cat.png -resize 1x1\! \
    -format "%[fx:int(255*r+.5)],%[fx:int(255*g+.5)],%[fx:int(255*b+.5)]" info:-
Run Code Online (Sandbox Code Playgroud)

输出格式应如下所示:

155,51,127
Run Code Online (Sandbox Code Playgroud)

这应该适用于ImageMagick 6.3.9.1+