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

Imagemagick 按图像大小的百分比指定线的端点,imagemagick,nine-patch,imagemagick-convert,Imagemagick,Nine Patch,Imagemagick Convert,我试图在各种尺寸的ninepatch图像上绘制拉伸条。我在脚本中这样做,我希望能够指定不同的主图像或将其缩放到不同的大小,而无需手动重新计算我在其上绘制的线条的所有像素坐标。有没有办法将线的端点指定为图像大小的百分比?我试过这个,但不起作用: convert -draw 'line 0,45% 0,55%' $myfile tmp~ && mv tmp~ $myfile 我曾希望这将沿着图像左侧的中间10%画一条线。它确实绘制了一条线,但它忽略了百分比,并在0,45到0,55之

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

convert -draw 'line 0,45% 0,55%' $myfile tmp~ && mv tmp~ $myfile
我曾希望这将沿着图像左侧的中间10%画一条线。它确实绘制了一条线,但它忽略了百分比,并在0,45到0,55之间绘制了一条线,而与图像大小无关


如果ImageMagick无法做到这一点,我是否可以使用另一个Linux命令行工具?

我不相信您可以使用百分比,但是,通过使用ImageMagick内置的
fx
操作符计算线位置作为图像高度的函数,您可以获得非常简洁的结果,并且不必使用
bash
bc
或类似的工具进行任何计算

我能想到的最好办法是:

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
当然,你可以用一个变量替换<代码>图像.jpg p/代码>,并且如果你真的想把第一个命令放在第二个中间,你也可以把它变成一个(丑陋)一行。


另外请注意,不需要像您那样创建临时图像和重命名-您可以像我一样在原始图像上绘制。

太棒了。我在这个问题上加了星星,这个问题似乎和我的问题有点相似。。。也许你也能帮这个家伙。没问题-我想我也为他安排了一个解决方案:-)