diff --git a/crop.jpg b/crop.jpg new file mode 100644 index 0000000..b239da7 Binary files /dev/null and b/crop.jpg differ diff --git a/origin.jpg b/origin.jpg new file mode 100644 index 0000000..c7dfe34 Binary files /dev/null and b/origin.jpg differ diff --git a/resize.py b/resize.py index 61062cc..111727a 100755 --- a/resize.py +++ b/resize.py @@ -6,6 +6,7 @@ import argparse parser = argparse.ArgumentParser() parser.add_argument("--width", dest="width", type=int, required=True) parser.add_argument("--height", dest="height", type=int, required=True) +parser.add_argument("--crop", action="store_true", required=False) parser.add_argument("source", type=str) parser.add_argument("destination", type=str) args = parser.parse_args() @@ -16,9 +17,22 @@ outfile = args.destination try: im = Image.open(infile) im = im.convert() - im.thumbnail(size, Image.ANTIALIAS) - im_result = Image.new('RGB', (args.width, args.height), (255, 255, 255)) - im_result.paste(im, ((args.width - im.size[0]) / 2, (args.height - im.size[1]) / 2)) + if args.crop: + width_crop = im.size[0] + height_crop = im.size[0]*(args.width/args.height) + width_padding = 0 + height_padding = (im.size[1]-height_crop)/2 + if height_crop > im.size[1]: + width_crop = im.size[1]*(args.height/args.width) + height_crop = im.size[1] + width_padding = (im.size[0]-width_crop)/2 + height_padding = 0 + im_crop = im.crop((width_padding, height_padding, width_crop+width_padding, height_crop+height_padding)) + im_result = im_crop.resize(size, Image.ANTIALIAS) + else: + im.thumbnail(size, Image.ANTIALIAS) + im_result = Image.new('RGB', (args.width, args.height), (255, 255, 255)) + im_result.paste(im, ((args.width - im.size[0]) / 2, (args.height - im.size[1]) / 2)) enhancer = ImageEnhance.Contrast(im_result) im_result = enhancer.enhance(1.05) im_result.save(outfile, "JPEG", quality=100) diff --git a/thumbnail.jpg b/thumbnail.jpg new file mode 100644 index 0000000..6ce539e Binary files /dev/null and b/thumbnail.jpg differ