#!/usr/bin/env python3

from PIL import Image, ImageOps, ImageDraw
from argparse import ArgumentParser


parser = ArgumentParser()
inputfile = parser.add_argument('-i', '--inputfile', help='input file path')
outputfile = parser.add_argument('-o', '--outputfile', help='output file path')
diameter = parser.add_argument('-d', '--diameter', help='output file diameter')

args = parser.parse_args()


print('Input file is '+ str(args.inputfile))
print('Output file is '+ str(args.outputfile))
print('Image diameter will be '+ str(args.diameter))

im = Image.open(args.inputfile)

width, height = im.size

left = (width - int(args.diameter))/2
top = (height - int(args.diameter))/2
right = (width + int(args.diameter))/2
bottom = (height + int(args.diameter))/2

im = im.crop((left, top, right, bottom));

bigsize = (im.size[0] * 3, im.size[1] * 3)
mask = Image.new('L', bigsize, 0)
draw = ImageDraw.Draw(mask)
draw.ellipse((0, 0) + bigsize, fill=255)
mask = mask.resize(im.size, Image.ANTIALIAS)
im.putalpha(mask)

output = ImageOps.fit(im, mask.size, centering=(0.5, 0.5))
output.putalpha(mask)
output.save(args.outputfile)

print('Done!')