图像魔术未处理所有图像

时间:2018-11-05 22:22:03

标签: image image-processing imagemagick grayscale

我目前正在尝试使用以下方法将一批图像转换为灰度:

转换“ * .jpg”-设置色彩空间灰色-单独-平均“ * .jpg”

现在,我正在处理数百个图像。当我运行命令时,我会获得所有图像的副本,但实际上只有第一个图像会转换为灰度图像。有人知道问题可能是什么吗?另外,如果有人能一次更好地处理大量图像(最终我将需要转换几千个),我将不胜感激。

谢谢!

1 个答案:

答案 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在其他地方。