Sunday, December 13, 2015

Greyscale Batch Conversion of Image Files

Using ImageMagick, it's easy to convert all the image files in a directory to black and white. Here are short scripts implemented in Perl, Python, and Ruby that open the current directory, parse through all the filenames in the directory, to create greyscale versions of jpg, gif, bmp, or png images. Each greyscale copy of an image file is provided with a new filename consisting of "_bw" appended to the filename prefix (e.g., dog.png is copied as the greyscale file, dog_bw.png)
opendir(FILES, ".") || die ("Unable to open directory");
@in_files = readdir(FILES);
foreach $filename (@in_files)
   if ($filename =~ /([a-z0-9\_]+)(\.[gifbmpjpgn]{3}) *$/i)
     $out_file = $1 . "_bw" . $2;
     system("convert ${filename} -set colorspace Gray -separate -average ${out_file}");

import os, re, string
filelist = os.listdir(".")
for file in filelist:
  if ".jpg" in file or ".bmp" in file or ".gif" in file or ".png" in file: 
    outfile = "bw_" + file 
    command = "convert " + file + " -set colorspace Gray -separate -average " + outfile
    #print command

filelist = Dir.glob("*.*")
filelist.each do
 if file =~ /([a-z0-9\_]+)(\.[gifbmpjpgn]{3}) *$/i
    out_file = $1 + "_bw" + $2
    system("convert " + file + " -set colorspace Gray -separate -average " + out_file)
© 2008 Jules Berman

As with all of my scripts, lists, web sites, and blog entries, the following disclaimer applies. This material is provided by its creator, Jules J. Berman, "as is", without warranty of any kind, expressed or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. in no event shall the author or copyright holder be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the material or the use or other dealings.