54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
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')
|