djs*_*dog 6 imagemagick montage imagemagick-convert
所以我想创建一张由三张较小图像组成的尺寸为 3600x2280 的大图像。第一个应将大小调整为 1680x1050 并放置在左上角。第二个需要调整为 1920x1200 并立即放置在其右侧(+1680 以上)。第三张图片的大小应调整为 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
Run Code Online (Sandbox Code Playgroud)
...但这将第二张图像放在第一张图像上(我想是因为它不知道延伸到最后?)。我尝试过 -composite、-gravity 和 +repage 的各种组合,但似乎找不到解决方案。
Mar*_*ell 10
有很多方法可以做到这一点。选择最适合您思维方式的一种!我使用这样的测试图像:
1.jpg => red
2.jpg => green (lime actually)
3.jpg => blue
Run Code Online (Sandbox Code Playgroud)
方法一
convert -background none \
1.jpg -resize 1680x1050! \
\( 2.jpg -resize 1920x1200! \) +append \
\( 3.jpg -resize 1920x1080! -gravity east \) -append \
result.png
Run Code Online (Sandbox Code Playgroud)
这就是说...... “让所有未绘制的区域保持透明。调整图像 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
Run Code Online (Sandbox Code Playgroud)
也就是说... “加载并调整图像 2 的大小。加载并调整图像 3 的大小。将图像 3 放置在图像 2 下方 ( -append)。加载并调整图像 1 的大小。将图像 1 放置+swap在图像列表中的 ( ) 图像 2 之前。现在附加第二个图像列表中第一个 ( ) 右侧的图像+append。”
方法三
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
Run Code Online (Sandbox Code Playgroud)
这就是说... “将所有未绘制的区域保持透明。加载图像 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
Run Code Online (Sandbox Code Playgroud)
这就是说...... “启动一个复合语句,该语句将加载 4 个图像并调整其大小,并将每个图像作为 MIFF(Magick 图像文件格式)发送到一个montage命令,该命令会将它们全部放在2x2网格 ( -tile 2x2) 中,并且它们之间没有空格 ( -geometry +0+0)”。
| 归档时间: |
|
| 查看次数: |
3509 次 |
| 最近记录: |