所以我想创建一个大小为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的各种组合,但似乎无法找到解决方案。
答案 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
那说...... "让所有未上漆的区域保持透明。调整图像大小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
)。"