Created
August 24, 2018 01:04
-
-
Save koifish082/081847b597c9c4c6209ba45cc5ddb0d5 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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