|
@@ -0,0 +1,66 @@
|
|
|
+# main imports
|
|
|
+import os, sys
|
|
|
+import argparse
|
|
|
+import numpy as np
|
|
|
+
|
|
|
+# image processing
|
|
|
+from PIL import Image
|
|
|
+
|
|
|
+def reduce_image(image, size):
|
|
|
+ """Reduce image from its center
|
|
|
+
|
|
|
+ Arguments:
|
|
|
+ image {PIL} -- PIL image expected
|
|
|
+ size {tuple(int,int)} -- tuple of 2 elements int (width, height)
|
|
|
+ """
|
|
|
+
|
|
|
+ image = np.array(image)
|
|
|
+
|
|
|
+ width, heigth, _ = image.shape
|
|
|
+ n_w, n_h = size # new expected size
|
|
|
+
|
|
|
+ # get center of image
|
|
|
+ middle_w = int(width / 2)
|
|
|
+ middle_h = int(heigth / 2)
|
|
|
+
|
|
|
+ # start coordinates
|
|
|
+ s_w = middle_w - int(n_w / 2)
|
|
|
+ s_h = middle_h - int(n_h / 2)
|
|
|
+
|
|
|
+ # end coordinates
|
|
|
+ e_w = middle_w + int(n_w / 2)
|
|
|
+ e_h = middle_h + int(n_h / 2)
|
|
|
+
|
|
|
+ return image[s_w:e_w, s_h:e_h]
|
|
|
+
|
|
|
+
|
|
|
+def main():
|
|
|
+ """
|
|
|
+ main function which is ran when launching script
|
|
|
+ """
|
|
|
+ parser = argparse.ArgumentParser(description="Reduce an image from its center coordinate")
|
|
|
+
|
|
|
+ parser.add_argument('--image', type=str, help='image to convert')
|
|
|
+ parser.add_argument('--size', type=str, help='size of expected output image (width, height)')
|
|
|
+ parser.add_argument('--output', type=str, help='output image filename')
|
|
|
+
|
|
|
+ args = parser.parse_args()
|
|
|
+
|
|
|
+ p_image = args.image
|
|
|
+ p_size = list(map(int, args.size.split(',')))
|
|
|
+ p_output = args.output
|
|
|
+
|
|
|
+
|
|
|
+ image = Image.open(p_image)
|
|
|
+
|
|
|
+ # get reduced image
|
|
|
+ reduced = reduce_image(image, p_size)
|
|
|
+
|
|
|
+ # save image
|
|
|
+ reduced = Image.fromarray(reduced)
|
|
|
+
|
|
|
+ reduced.save(p_output)
|
|
|
+
|
|
|
+
|
|
|
+if __name__ == "__main__":
|
|
|
+ main()
|