我目前正在尝试使用以下方法将一批图像转换为灰度:
转换“ * .jpg”-设置色彩空间灰色-单独-平均“ * .jpg”
现在,我正在处理数百个图像。当我运行命令时,我会获得所有图像的副本,但实际上只有第一个图像会转换为灰度图像。有人知道问题可能是什么吗?另外,如果有人能一次更好地处理大量图像(最终我将需要转换几千个),我将不胜感激。
谢谢!
答案 0 :(得分:1)
如注释中所指出,输出不能包含通配符。如果要使用更新的色彩空间覆盖原始文件,可以尝试使用mogrify
实用程序。
mogrify -set colorspace Gray -separate -average *.jpg
但是那样做可能会带来危险,因为您要销毁原始文件。一个简单的for循环可能易于计划和管理。
for filename in $(ls *.jpg)
do
convert "$filename" -set colorspace Gray -separate -average "output_${filename}"
done
最终我需要转换几千
如果您确实面临大量任务,建议您将任务分散在多个CPU内核上。也许使用GNU Parallel。
parallel convert {} -set colorspace Gray -separate -average output_{.} ::: *.jpg
当然,我假设您在* nix系统上使用BASH。 YMMV在其他地方。