How can I batch convert images to b/w while preserving the folder structure

8,584

Solution 1

We can use convert command to convert images to black & white:

convert -colorspace GRAY image.png b-w_image.png

Where image.png is the input image and b-w_image.png is output imgage.

Combining this command with find we can create a bash one liner to convert all the images found under parent directory.

How-to:
Open terminal by hitting Ctrl+Alt+T, cd to parent/main directory and run the following command:

for img in $(find . -iname '*.png'); do echo -n "Converting $img"; convert -colorspace GRAY $img $img && echo ' [Done]'; done

It will convert and overwrite all the images under parent directory. I will suggest to test it on some temporary images and if you're satisfied with the results than run it on actual images.

Solution 2

-monochrome is an option if you want binary black and white (1bit per pixel).

It uses some smart dithering and generates very visible output:

convert -monochrome in.png out.png

Before:

enter image description here

After:

enter image description here

To maintain directory structure, you will have to script it up as mentioned by Basharat.

Share:
8,584

Related videos on Youtube

Levan
Author by

Levan

Updated on September 18, 2022

Comments

  • Levan
    Levan almost 2 years

    I want to batch process images but I have a very specific task that I want to do

    1. I do not want to change image type
    2. I want to make them black and white
    3. I want it to create/preserve images and sub folder structure

    I did this in Photoshop but it did not preserve folders and sub folder content it just threw every converted file in one directory.

    My only hope is Linux :D

    Thank you in advance!

    You can see different discussion about this here but Basharat Sial worked for me

    http://ubuntuforums.org/showthread.php?t=2143992

  • Levan
    Levan about 11 years
    I think I love you worked like a charm Thank you very much