我trim
使用ImageMagick来识别图像:
step2.png[0] PNG 1200x1200=>264x468 1200x1200+381+273 8-bit sRGB 0.031u 0:00.014
step3.png[0] PNG 264x468 1200x1200+381+273 8-bit sRGB 31.8KB 0.000u 0:00.000
现在,我想使用修剪区域(从381,273开始的264x468像素区域)来裁剪另一个图像(step2.png的前身)。如何以编程方式执行此操作,即不从-identify
输出中复制粘贴381,273等?
我的想法是制作step3.png的alpha蒙版并将其与原始图像合成,但我无法弄清楚如何。
答案 0 :(得分:2)
更新了答案
经过反思,我认为你的意思是这个,other.png
被修剪以匹配trimmed_orig.png
:
composite -compose src other.png trimmed_orig.png trimmed_other.png
图像是这样的:
identify other.png trimmed_orig.png trimmed_other.png
other.png PNG 560x360 560x360+0+0 8-bit sRGB 2c 312B 0.000u 0:00.000
trimmed_orig.png PNG 400x200 560x360+80+80 8-bit sRGB 2c 340B 0.000u 0:00.000
trimmed_other.png PNG 400x200 560x360+80+80 8-bit sRGB 2c 340B 0.000u 0:00.000
原始答案
不确定您是指以下内容还是明确指出以下内容,但让我们试试看。
假设您从这张图片开始:
你要剪掉红色,找到内部蓝色区域的位置。你可以这样做:
convert image.png -trim trimmed.png
你会从左上角得到一个蓝色的400x200图像偏移80,80。不过这样做,你可以让ImageMagick在没有这样做的情况下告诉你它会修剪它,使用-format %@
这样:
convert image.png -format "%@" info:
400x200+80+80
所以,你会这样捕获:
trim=$(convert image.png -format"%@" info:)
现在,如果你有另一张这样的图像:
您可以使用与原始图像相同的区域修剪它,如下所示:
convert other.png -crop $trim cropped.png
答案 1 :(得分:0)
使用ImageMagick 7+,您可以通过隐藏一个图像的大小并将其用作另一个图像的修剪大小,使用fx表达式轻松完成此操作:
magick \( \
step3.png -set option:trimzone "%[fx:w]x%[fx:h]+%[fx:page.x]+%[fx:page.y]" +delete \
\) other_image.png -crop %[trimzone] output.png
老实说,你可以消除你的大部分或全部中级"步骤x"文件也是如此,但如果没有关于流程的更多详细信息,则很难说明如何。