使用ImageMagick将正方形中的多个图像组合并调整大小

时间:2016-03-02 18:13:45

标签: imagemagick imagemagick-convert montage

所以我想创建一个大小为3600x2280的大图像,由三个较小的图像组成。第一个应调整为1680x1050并放在左上角。第二个需要重新调整到1920x1200并立即放在右边(+1680以上)。第3张图像应调整为1920x1080,并放在右下角(+ 1680 + 1200)。左下角只是空白/透明。

我已经尝试过我在网上搜索过的各种命令,并且认为我对这三个图像中的两个只有以下内容有点接近:

convert -define png:size=3600x2280 \( Photos/DSC05525-original.jpg -resize 1680x1050 \) -geometry +0+0 -composite \( Photos/Sydney-Loftus-Train-Station-original.jpg -resize 1920x1200 \) -geometry +1680+0 -extent 3600x2280 test.png

...但是第二张图像放在第一张图片上(我想是因为它不知道要延伸到最后一张?)。我尝试了-composite,-gravity和+ repage的各种组合,但似乎无法找到解决方案。

1 个答案:

答案 0 :(得分:3)

有很多方法可以做到这一点。选择最符合你的思维方式的那个!我使用了这样的测试图像:

1.jpg => red
2.jpg => green (lime actually)
3.jpg => blue

方法1

convert -background none                               \
     1.jpg -resize 1680x1050!                          \
  \( 2.jpg -resize 1920x1200! \) +append               \
  \( 3.jpg -resize 1920x1080! -gravity east \) -append \
  result.png

enter image description here

那说...... "让所有未上漆的区域保持透明。调整图像大小1.调整图像2的大小并将其放在图像1的右侧(+append)。调整图像大小3并将其对齐东方。在图像1和2(-append)下面添加。"

方法2

convert -background none                  \
  \( 2.jpg -resize 1920x1200! \)          \
  \( 3.jpg -resize 1920x1080! \) -append  \
  \( 1.jpg -resize 1680x1050! \) +swap +append  result.png

说... "加载并调整图像大小2.加载图像并调整图像大小3.将图像3放在图像2(-append)下面。加载图像并调整图像大小1.将图像1放在图像列表中的(+swap)图像2之前。现在将第二个图像附加到第一个(+append)右侧的列表中。"

方法3

convert -background none                                    \ 
    1.jpg -resize 1680x1050! -extent 3600x2280              \
 \( 2.jpg -resize 1920x1200! -geometry +1680 \)  -composite \
 \( 3.jpg -resize 1920x1080! -geometry +1680+1200 \) -composite result.png

那说...... "保持任何未上漆的区域透明。加载图像1调整其大小,然后将画布扩展到完整输出大小以适应后续图像。加载图像2,调整大小,定位和平铺到画布上。加载图像3,调整大小并将其拖到画布上。"

方法4

只是为了好玩,这是一种完全不同的思考方式:

{ convert 1.jpg -resize 1680x1050! miff:- ;   \
  convert 2.jpg -resize 1920x1200! miff:- ;   \
  convert -size 1680x1 xc:none miff:- ;       \
  convert 3.jpg -resize 1920x1080! miff:- ; } | 
  montage -background none -geometry +0+0 -tile 2x2 miff:- result.png

那说...... "启动一个复合语句,它将加载和调整4个图像并将它们作为MIFF(Magick图像文件格式)发送到montage命令将它们放在2x2网格(-tile 2x2)中,它们之间没有空格(-geometry +0+0)。"