按图像大小的百分比指定行的端点

时间:2014-09-17 03:49:59

标签: imagemagick nine-patch imagemagick-convert

我正在尝试在各种尺寸的九张图片上绘制拉伸条。我在脚本中这样做,我希望能够指定不同的主图像或将其缩放到不同的大小,而无需手动重新计算我正在绘制的线条的所有像素坐标。有没有办法将线的端点指定为图像大小的百分比?我试过这个,这不起作用:

convert -draw 'line 0,45% 0,55%' $myfile tmp~ && mv tmp~ $myfile

我原本希望这会沿着图像左侧10%的中间画一条线。它确实绘制了一条线,但它忽略了百分比,并且无论图像大小如何,都将线从0,45绘制到0.55。

如果ImageMagick无法做到这一点,我还可以使用其他Linux命令行工具吗?

1 个答案:

答案 0 :(得分:1)

我不相信你可以使用百分比来做到这一点,但是你可以非常简洁地使用bashbc或使用ImageMagick的内置版本来进行任何计算。 {1}}运算符根据图像高度计算线位置。

我能想出的最好的是:

fx

当然你可以用变量替换linespec=$(convert image.jpg -format "0,%[fx:int(h*0.45)],0,%[fx:int(h*0.55)]" info:) convert image.jpg -stroke red -strokewidth 32 -draw "line $linespec" image.jpg ,如果你真的想把第一个命令放在第二个中间,你也可以把它变成一个(丑陋的)单行。

另请注意,无需像您一样创建临时图像并重命名 - 您可以像我一样使用原始图像。