首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用图像转换批处理操作比Gimp花费太多时间。如何在批处理模式下执行每个文件?

使用图像转换批处理操作比Gimp花费太多时间。如何在批处理模式下执行每个文件?
EN

Stack Overflow用户
提问于 2022-09-08 16:33:59
回答 2查看 51关注 0票数 0

使用图像转换批处理操作比Gimp花费太多时间。如何在批处理模式下执行每个文件?

可以执行以下命令来转换200+图像文件。然而,转换/图像文件为所有图像创建tmp文件,然后应用您给它的任何进程,例如。旋转。

代码语言:javascript
复制
 convert '*.jpg' -set filename:fn '%[basename]' -units PixelsPerInch  -rotate -90  -density 300 -quality 95  -resize 28% '%[filename:fn].jpg'

这意味着它可能会消耗大量内存/临时磁盘大小,而且需要花费太多的时间。现在它运行的时间超过了10+分钟,而且还没有完成。

相比之下,GIMP -in批处理模式-它使每个文件的操作(旋转,完成,下一步,旋转,完成,下一个等等),它需要更少的时间(2-3分钟)。

我认为GIMP使用imagemagick转换。

如何在linux终端中运行转换(批处理模式),并对每个文件进行操作而不是对所有文件进行操作?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-08 16:54:20

通过试验和寻找其他例子,

我发现这个imagemagick命令在每个文件上操作,而不是在所有文件上的同一时间操作:

代码语言:javascript
复制
 for pic in *.jpg; do convert -units PixelsPerInch  -rotate -90  -density 300 -quality 95  -resize 28% "$pic" "$pic";done

注意:如果你不想取代原来的照片,最后的"$pic“可能会被操纵。例如:"$pic" "${pic//}_copy.jpg"

票数 -1
EN

Stack Overflow用户

发布于 2022-09-09 04:02:27

您还可以使用平行循环您的文件,例如:

代码语言:javascript
复制
parallel \
    convert {} -resize 28% -rotate -90 -quality 95 copy_{} \
    ::: *.jpg

(你不需要密度,旋转前收缩的速度更快)

它将并行运行转换命令。默认情况下,它将使用尽可能多的进程,就像您有内核一样。在启动命令时,{}被替换为文件名。你应该得到一个不错的加速。

我尝试了一个10,000×10,000像素jpeg的快速基准测试:

代码语言:javascript
复制
$ for i in {1..200}; do cp ~/wtc.jpg $i.jpg; done
$ /usr/bin/time -f %M:%e parallel convert {} -resize 28% -rotate -90 -quality 95 copy_{} ::: *.jpg
962788:31.87

因此,200个文件在32s中旋转和调整大小,峰值时转换需要1gb左右的内存。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73652424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档