gpt4 book ai didi

imagemagick - 使用 Imagemagick 以两个为一组批量附加图像

转载 作者:行者123 更新时间:2023-12-03 13:54:00 24 4
gpt4 key购买 nike

我有一个图像目录,需要将这些图像以两个为一组水平合并,然后将每个图像的输出保存到一个新的图像文件中:

image-1.jpeg
image-2.jpeg
image-3.jpeg
image-4.jpeg
image-5.jpeg
image-6.jpeg

通过命令行使用 Imagemagick,有没有办法遍历目录中的所有其他图像并运行 magick convert image-1.jpeg image-2.jpeg +append image-combined-*.jpg?

所以结果将是组合成对的图像:

image-1.jpeg image-2.jpeg -> image-combined-1.jpg
image-3.jpeg image-4.jpeg -> image-combined-2.jpg
image-5.jpeg image-6.jpeg -> image-combined-3.jpg

最佳答案

将它们全部简洁地附加到 GNU Parallel 中,并实际使用您为 Intel 支付的所有那些可爱的 CPU 内核!

parallel -N2 convert {1} {2} +append combined-{#}.jpeg ::: *jpeg

哪里:

  • -N2表示一次取两个文件
  • {1}{2}是前两个参数
  • {#} 是顺序作业编号,
  • ::: 标定参数的开始

如果您的 CPU 有 8 个核心,GNU Parallel 将同时运行 8 个converts,除非您通过添加 -j4< 指定一次说 4 个作业.


如果您正在学习 GNU Parallel 并正在寻找自己的方法,请添加:

  • --dry-run 这样你就可以在不做任何实际操作的情况下看到它会做什么
  • -k 保持输出顺序

所以,我的意思是:

parallel --dry-run -k -N2 convert {1} {2} +append combined-{#}.jpeg ::: *jpeg

示例输出

convert image-1.jpeg image-2.jpeg +append combined-1.jpeg
convert image-3.jpeg image-4.jpeg +append combined-2.jpeg
convert image-5.jpeg image-6.jpeg +append combined-3.jpeg

ma​​cOS 上,您只需安装 GNU Parallel 即可:

brew install parallel

如果您有数千或数十万个文件,您可能会遇到错误 Argument list too long - 尽管这在 macOS 上很少见,因为限制为 262,144 个字符:

sysctl -a kern.argmax
kern.argmax: 262144

如果发生这种情况,您可以使用此语法在 GNU Parallel 中通过管道传输文件名:

find /somewhere -iname "*.jpeg" -print0 | parallel -0 -N2 convert {1} {2} +append combined-{#}.jpeg

关于imagemagick - 使用 Imagemagick 以两个为一组批量附加图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47419060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com