使用 ImageMagick 绘制居中矩形

Posted

技术标签:

【中文标题】使用 ImageMagick 绘制居中矩形【英文标题】:Drawing centered rectangle with ImageMagick 【发布时间】:2018-12-05 23:24:13 【问题描述】:

使用 CLI,我想为图像添加一个黑色矩形,该矩形 1) 居中,2) 每个边缘的 X 像素。

基本上,我几乎想要 -border 的反面(而不是添加某种颜色的边框,我想将图像的 X 像素保留为边框,然后将其他所有内容都涂成黑色。另外,图像大小不应该改变)。

我预计会起作用但没有起作用的东西是:

convert myImage.jpg -fill black -draw "rectangle 10,10 %[fx:w-20],%[fx:h-20]" outImage.jpg

...对于 10 像素的“边框”。看起来 -draw 不接受 FX 运算符或属性,尽管我在某个地方(如 How can I use imagemagick attributes in the draw rectangle command?)发现它应该在 IM 7.x 中(这是我正在使用的)。

【问题讨论】:

【参考方案1】:

在 ImageMagick 7 中,您应该使用 magick 而不是转换。使用 convert 将调用不支持 fx 内联操作的 ImageMagick 6。在 ImageMagick 7 中,对黑色矩形的 10 像素边框执行此操作:

输入:

magick lena.jpg -fill black -draw "rectangle 10,10 %[fx:w-11],%[fx:h-11]" result.jpg

请注意,应该使用 11 而不是 10,因为图像中的最后一个像素是 w-1,h-1。编号从 0 开始。所以我已经更正了上面的原始答案。

【讨论】:

哦,天哪,所以我遇到的唯一真正问题是使用了错误的命令(我在 2010 上犯了一个错误,但这很容易解决)。谢谢! ImageMagick 6 和 7 之间的差异,请参阅imagemagick.org/script/porting.php#cli 其实fx命令应该是%[fx:w-11],否则你会砍掉一个像素,但无论如何,再次感谢! 确实如此。我打算在我的帖子中纠正这个问题,但我认为这不是那么重要和问题。但很高兴你想通了。 为了回复的准确性,我在帖子中更正了它。

以上是关于使用 ImageMagick 绘制居中矩形的主要内容,如果未能解决你的问题,请参考以下文章

使用 Core Graphics 在 UIImage 上绘制矩形

使用 DrawString 将单个字符居中

试图在矩形CSS上实现矩形[重复]

从地图中删除多边形

Dragonfly/imagemagick 调整大小和裁剪,并可能添加白色填充

像在 HTML Canvas 或 CSS 中一样为 SVG <image> 定义源矩形