Command line Imagemagick命令行,组合两个不同大小的图像

Command line Imagemagick命令行,组合两个不同大小的图像,command-line,imagemagick,Command Line,Imagemagick,我想使用Imagemagick中的“convert”(或其他)组合两个不同大小的图像。我希望它们在左下角对齐。例如,我有两个图像: trans_alpha.png(一个透明的42x37空白图像) 和shadow.png(68x23图像,我希望覆盖在左下角对齐的trans_alpha.png上) 我想要的结果是一个68x37图像,注意这些大小只是示例,我不想将大小放入命令行,我只想使用输入图像中的大小 我尝试了很多组合,但都没有成功: 尝试编号776(关闭,但与左上角对齐,而不是左下角对齐) 尝试

我想使用Imagemagick中的“convert”(或其他)组合两个不同大小的图像。我希望它们在左下角对齐。例如,我有两个图像:

trans_alpha.png(一个透明的42x37空白图像) 和shadow.png(68x23图像,我希望覆盖在左下角对齐的trans_alpha.png上)

我想要的结果是一个68x37图像,注意这些大小只是示例,我不想将大小放入命令行,我只想使用输入图像中的大小

我尝试了很多组合,但都没有成功:

尝试编号776(关闭,但与左上角对齐,而不是左下角对齐)

尝试841(正确对齐,但结果图像不够宽)

希望这是有道理的。 谢谢


Paul

Imagemagick包含许多有用的转换,但有时仍然缺少您需要的转换。由于原始图像是PNG无损位图,因此可以将其转换为长格式PBM或类似长格式PPM的相关格式。这些形式的优点是,它们以纯文本的形式逐像素地表示整个图像,人们可以编写一个程序——通常是一个相当短的程序——以自己喜欢的方式进行处理。作为存储格式,PBM和PPM效率极低,但它们同样极易操作,这正是您想要的


pbm(5)手册页(例如在
netpbm
软件包中的Debian/Ubuntu系统上提供)写得很好,并清楚地解释了过程。

我目前无法测试,但您可以将
-page
与层一起使用,因此类似的方法可能可行,但您可能需要计算Y偏移:

convert \
   trans_alpha.png \
  -background none \
   shadow.png \
  -page +0+10 \
  -layers merge \
  +repage \
   result.png

在回答我自己的问题时,你可能不需要-background none

(由电视上的聪明人提供)


谢谢,这是一个有趣的选择,但是(理想情况下)我想要一个基于Imagemagick的解决方案,而不是编写一个脚本/程序来完成我想要的任务。当然,如果不能做到这一点,我将研究PBM,这对于很多事情来说都是一个有用的想法,再次感谢。convert trans_alpha.png shadow.png-flip-background none-mosaic-flip result.pngThanks@Bonzo,我已经尝试过了(有/没有“-background none”),但不管我给它什么值,偏移似乎都没有什么区别(我尝试过“-0-0”之前)-始终是相同的最终结果。您需要将-page放在“shadow.png”之前。
convert trans_alpha.png shadow.png -gravity SouthWest -composite result.png
convert \
   trans_alpha.png \
  -background none \
   shadow.png \
  -page +0+10 \
  -layers merge \
  +repage \
   result.png
convert \
  trans_alpha.png shadow.png \
 -flip \
 -background none \
 -mosaic \
 -flip \
  result.png