From b2a3242112045ce54a50c857c4706c526bd60213 Mon Sep 17 00:00:00 2001 From: vikingowl Date: Wed, 26 Jan 2022 00:42:39 +0100 Subject: [PATCH] initial --- .gitignore | 2 + CompressResizeImages.py | 95 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 .gitignore create mode 100755 CompressResizeImages.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0ccc10d --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.idea +.git \ No newline at end of file diff --git a/CompressResizeImages.py b/CompressResizeImages.py new file mode 100755 index 0000000..1b91257 --- /dev/null +++ b/CompressResizeImages.py @@ -0,0 +1,95 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# import sys +import os +from PIL import Image +from resizeimage import resizeimage + + +# save directory name +directory_name = 'compress' + +# save directory name and full path +final_path = f"{os.getcwd()}/{directory_name}" + +try: + # if save directory is exists + if 'compress' in os.listdir(): + pass + else: + # save directory not exist + # create save directory + os.mkdir(final_path) + +except Exception as e: + print(e) + + +def compressor(file, quality, resize, size): + filepath = os.path.join(os.getcwd(), file) + + with Image.open(filepath) as image: + if resize and image.width >= size and image.width > image.height: + print('resize and compress: ' + file) + cover = resizeimage.resize_width(image, size) + cover.save( + str(final_path) + '/' + 'min-' + file, + image.format, + optimize=True, + quality=quality, + resample=Image.LANCZOS + ) + elif resize and image.height >= size and image.height > image.width: + print('resize and compress: ' + file) + cover = resizeimage.resize_height(image, size) + cover.save( + str(final_path) + '/' + 'min-' + file, + image.format, + optimize=True, + quality=quality, + resample=Image.LANCZOS + ) + else: + print('compress: ' + file) + image.save( + str(final_path) + "/" + "min-" + file, + image.format, + optimize=True, + quality=quality, + resample=Image.LANCZOS + ) + + +def main(quality_img, resize, size): + # get current directory path + cwd = os.getcwd() + + # only support these 4 formats + formats = ('.jpg', '.jpeg', '.png', '.webp') + + # get all files + for file in os.listdir(cwd): + # check file and compress file + if os.path.splitext(file)[1].lower() in formats: + # call compress function + compressor(file, quality_img, resize, size) + + print("Done") + + +# Driver code +if __name__ == "__main__": + size = 900 + # get image quality from user + quality_img = int(input("Enter image quality 1 to 100 (defaults to 80): ") or "80") + # check for resize + resize = str(input("Resize images? (N/y): ") or "N").lower() + if resize == 'n': + resize = False + elif resize == 'y': + resize = True + # get desired size + size = int(input("Size of longer side (defaults to 900): ") or "900") + + main(quality_img, resize, size)