Aly
Aly

Reputation: 1

Image Magick Not Processing All Images

I'm currently trying to convert a batch of images to greyscale using:

convert "* .jpg" -set colorspace Gray -separate -average "*.jpg"

Right now I'm working on a couple of hundred images. When I run the command I get copies of all the images, but only the 1st is actually converted to greyscale. Anyone know how what the issue might be? Also, if anyone has a better way of working through a very large quantity of images (ultimately I'll need to convert several thousand) at a time I'd appreciate it.

Thanks!

Upvotes: 0

Views: 347

Answers (1)

emcconville
emcconville

Reputation: 24419

As pointed out in the comments, you can not have wildcards as the output. If you want to overwrite the original files with the updated colorspace, you can try the mogrify utility.

mogrify -set colorspace Gray -separate -average *.jpg

But that can be risky as your destroying originals. A simple for-loop might be easy to schedule & manage.

for filename in $(ls *.jpg)
do
    convert "$filename" -set colorspace Gray -separate -average "output_${filename}"
done

ultimately I'll need to convert several thousand

If you really are facing large quantities of tasks, I would suggest spreading the tasks over multiple CPU cores. Perhaps with GNU Parallel.

parallel convert {} -set colorspace Gray -separate -average output_{.} ::: *.jpg

Of course I'm assuming your working with BASH on a *nix system. YMMV elsewhere.

Upvotes: 2

Related Questions