import glob, os from PIL import Image, ImageOps import argparse from pathlib import Path import tqdm max_size = 1050 def resize_img(src, dest): if not os.path.isdir(dest): os.mkdir(dest) res_folder = os.path.join(dest, 'resized') if not os.path.isdir(res_folder): os.mkdir(res_folder) bw_folder = os.path.join(dest, 'bw') if not os.path.isdir(bw_folder): os.mkdir(bw_folder) paths = Path(src).rglob('*.*') paths_list = list(paths) for path in tqdm.tqdm(paths_list): #print(path.name) id, _ = os.path.splitext(path.name) outfile_res = os.path.join(res_folder, id + ".jpg") outfile_bw = os.path.join(bw_folder, id + ".jpg") try: im = Image.open(path) if im.mode in ("RGBA", "P"): im = im.convert("RGB") width, height = im.size if width > max_size or height > max_size: im.thumbnail((max_size, max_size), Image.ANTIALIAS) im.save(outfile_res, "JPEG") im = ImageOps.grayscale(im) im.save(outfile_bw, "JPEG") except IOError: print("cannot process '%s'" % path) pass if __name__ == '__main__': parser = argparse.ArgumentParser(description='Image resizing') parser.add_argument('src', type=str, help='images source folder path') parser.add_argument('dest', type=str, help='images dest folder path') args = parser.parse_args() resize_img(args.src, args.dest) #resize_img('/media/Data/data/test/gem/img/originals/export_Immagini_SitoPubblico', '/media/Data/data/test/gem/img/export_Immagini_SitoPubblico_resized_bw_auto') #resize_img('/media/Data/data/test/gem/img/originals/ImmaginiComparazioni', '/media/Data/data/test/gem/img/ImmaginiComparazioni_resized_bw_autocontrast')