Skip to content

Instantly share code, notes, and snippets.

@koifish082
Created August 24, 2018 01:04
Show Gist options
  • Save koifish082/081847b597c9c4c6209ba45cc5ddb0d5 to your computer and use it in GitHub Desktop.
Save koifish082/081847b597c9c4c6209ba45cc5ddb0d5 to your computer and use it in GitHub Desktop.
from typing import List
from PIL import Image
import os
from zipfile import ZipFile, ZIP_DEFLATED
import glob
class Resize:
def __init__(self, root_dir_path: str, resize_param_list: List[object]):
self.resize_param_list: List[ResizeParam] = resize_param_list
self.root_dir_path: str = root_dir_path
self.image_size_dir_paths = []
def resize(self):
# self.load_images_by_dir_path()
self.resize_all_images()
# def load_images_by_dir_path(self):
# image_list = glob.glob(self.image_dir_path + "*")
# print(image_list)
# for image_path in image_list:
# img = Image.open(image_path)
# image_name = image_path.replace(self.image_dir_path, "")
# print(image_path)
# print(image_name)
# print(self.image_dir_path + image_name)
# for resize_param in self.resize_param_list:
# img_resize = img.resize((resize_param.width, resize_param.height))
# self.make_size_name_dir(self.image_dir_path + str(resize_param.width))
# save_image_path = self.image_dir_path + str(resize_param.width) + "/" + image_name
# print(save_image_path)
# img_resize.save(save_image_path)
def save_resize_image_by_file_path(self, dir_path, image_name):
image_path = dir_path + '/' + image_name
img = Image.open(image_path)
for resize_param in self.resize_param_list:
img_resize = img.resize((resize_param.width, resize_param.height))
resize_dir_path = dir_path + '/' + str(resize_param.width)
self.make_size_name_dir(resize_dir_path)
save_image_path = resize_dir_path + "/" + image_name
print(save_image_path)
img_resize.save(save_image_path)
self.add_image_size_dir_path(resize_dir_path)
def make_size_name_dir(self, dirname: str):
if not os.path.isdir(dirname):
os.mkdir(dirname)
def resize_all_images(self):
for root, dirs, files in os.walk(self.root_dir_path):
if root.find('1024') > -1 or root.find('512') > -1 or root.find('256') > -1:
continue
print('-'*10)
print('root:{}'.format(root))
print('dirs:{}'.format(dirs))
print('files:{}'.format(files))
for file in files:
if file.find('.png') == -1:
continue
self.save_resize_image_by_file_path(root, file)
def add_image_size_dir_path(self, image_size_dir_path: str):
if not image_size_dir_path in self.image_size_dir_paths:
self.image_size_dir_paths.append(image_size_dir_path)
# def zip_image_size_dir(self):
# for size_dir_path in self.image_size_dir_paths:
# split_path = size_dir_path.split("/")
# dir_name = split_path[len(split_path) - 1]
# zip_file = ZipFile(size_dir_path + ".zip", "w", ZIP_DEFLATED)
# image_list = glob.glob(size_dir_path + "/*")
# # print("-------", dir_name)
# # print(image_list)
# # exit()
# for image_file in image_list:
# zip_file.write(image_file, '/' + dir_name)
# zip_file.close()
class ResizeParam:
height: str = 0
width: str = 0
# Setting Params
resize_param0 = ResizeParam()
resize_param0.width = 1024
resize_param0.height = 768
resize_param1 = ResizeParam()
resize_param1.width = 512
resize_param1.height = 384
resize_param2 = ResizeParam()
resize_param2.width = 256
resize_param2.height = 192
# Execute Resize
resize_param_list = [resize_param0, resize_param1, resize_param2]
image_path = "../../public/"
resize = Resize(image_path, resize_param_list)
resize.resize()
# resize.zip_image_size_dir()
# print(resize.image_size_dir_paths)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment