复制像素颜色 (ImageMagick)

Copy a pixel color (ImageMagick)

如何指定从给定像素到填充的颜色?

convert -gravity center -background rgb\(222,97,56\) -fill "#%[hex:u.p{10,10}/2]" -size 120x60 -pointsize 42 label:Test -depth 8 out.png

错误:转换:无法打开图像'#%[hex:u.p{10,10}/2]':没有那个文件或目录

-format '%[hex:p{10,10}/2]\n' info:

returns "6F311C" 和 -fill "#6F311C" 虽然有效。

更新答案

如果你想使用 label: 而不是 -annotate,试试这个:

magick -gravity center -size 100x100 xc:yellow  \
   -fill black -draw "rectangle 10,10 100,100" \
   -fill '%[pixel:p{0,0}]' -background magenta -size 100x80 -pointsize 42 label:"Label" -append result.png

原答案

我想你想要这个:

magick -gravity center -size 100x100 xc:yellow  \
    -fill black -draw "rectangle 10,10 100,100" \
    -fill '%[pixel:p{0,0}]' -annotate 0 "text" result.png

前两行创建一个黄色 canvas,黑色矩形覆盖 bottom-right 部分,留下 top-left 像素黄色。然后从像素 (0,0) 获取填充颜色并用于文本注释。

为避免 Imagemagick 在不同 OS 平台上出现问题,您应该使用双引号。

以下应 return 蓝色的十六进制值:

magick xc:red xc:blue xc:green1 +append -depth 8 -format "%[hex:u.p{1,0}]" info:

0000FFF

如果你真的要做除法,那么

magick xc:red xc:blue xc:green1 +append -depth 8 -format "%[hex:u.p{1,0}/2]" info:

000080

所以要将其放入标签中,

# create image
magick xc:red xc:blue xc:green1 +append rgb.png

# put color into label
magick rgb.png -set label "%[hex:u.p{1,0}/2]" rgb.png

# check label
magick rgb.png -format "%l" info:

000080

以下内容适用于 Imagemagick 7。将 # 符号添加到您的十六进制命令中。

magick -size 120x60 -background "rgb(222,97,56)" -depth 8 -fill "#%[hex:u.p{10,10}/2]" -pointsize 42 -gravity center label:Test -depth 8 out.png

请注意,Imagemagick 7 的实现添加了 Imagemagick 6 中不可用的 in-line 计算。