imagemagick像素颜色提取(强制RGB)

imagemagick pixel color extraction (force RGB)

我正在使用 imagemagick 在 jpeg 图像中提取像素颜色@一些 x,y 坐标。

大部分时间的输出是 srgb(R,G,B) 但在某些情况下它是 returns grey##.

由于计算需要纯 RGB 数字,grey## 不是一个好的值。

是否可以始终从 imagemagick 获取 RGB 值?

命令:

magick image.jpg -format "%[pixel:p{110,246}]" info:-

您要做的是在 ImageMagick fx: computation 中分别计算每个颜色通道。

magick image.jpg[1x1+110+245] -format "%[fx:round(255*u.r)],%[fx:round(255*u.g)],%[fx:round(255*u.b)]" info:


这将产生例如:

magick lena.jpg[1x1+110+245] -format "%[fx:round(255*u.r)],%[fx:round(255*u.g)],%[fx:round(255*u.b)]" info:


208,90,88

如果你想包含 rgb(),那么

magick image.jpg[1x1+110+245] -format "rgb(%[fx:round(255*u.r)],%[fx:round(255*u.g)],%[fx:round(255*u.b)])" info:


magick lena.jpg[1x1+110+245] -format "rgb(%[fx:round(255*u.r)],%[fx:round(255*u.g)],%[fx:round(255*u.b)])" info:


rgb(208,90,88)

添加:

如果你想返回多个像素,那么你可以这样做:

magick lena.jpg -format "rgb(%[fx:round(255*u.p{10,10}.r)],%[fx:round(255*u.p{10,10}.g)],%[fx:round(255*u.p{10,10}.b)]) rgb(%[fx:round(255*u.p{100,100}.r)],%[fx:round(255*u.p{100,100}.g)],%[fx:round(255*u.p{100,100}.b)])\n" info:


RGB(226,130,106) RGB(131,46,85)