備忘録やOUTPUT的な意味での蓄積
#作成目的
作業用の画像をすべてcropingしたいときに利用するコード
#作成環境
・windows10
・Anaconda3
・python3.7
・Jupyter Notebook
#ドキュメント
①cropしたいフォルダ名を入力
②folderがなければcurrent_folder内に、crop_folder を作成し画像をcropする
③すでに同じフォルダ名がある場合、誤操作を防ぐためにErrorになる
#ライブラリの読み込み
All Necessary Libraries.py
import pathlib
import os
import shutil
import pprint
import numpy as np
from glob import glob
from PIL import Image
from tqdm import tqdm
from pathlib import Path
#PG
crop_code
# フォルダー名を入力
folder_name = input('Enter the folder name :')
p = Path('C:/Users/H3051411/OUT/' + folder_name)
new_folder_name = '_crop_folder'
# 現在のpathから新しいpng_folderを作成
new_folder_path = os.path.join(p, new_folder_name)
# フォルダーがなければコピーして作成
if not os.path.exists(new_folder_path):
# ディレクトリ内のファイルを取得
os.makedirs(new_folder_path)
# 新たなpathの拡張子をpngファイルに変換
new_p = Path(new_folder_path)
files = list(p.glob('*.*'))
for i,f in tqdm(enumerate(files)):
print('画像トリミング数:{0}/{1}'.format(i+1,len(files)))
img = Image.open(f)
imgname = os.path.basename(f)
newfname = 'crop_' + imgname
# .crop((左上x,左上y,右下x,右下y))で指定.
# 左上の座標が(x, y) = (left, upper)、右下の座標が(x, y) = (right, lower)に対応する。
img_resize = img.resize((634, 9606), Image.LANCZOS)
img_resize.crop((0, 0, 634, 935)).save(new_p/newfname, quality=95)
else:
print('すでにfolderが存在します.')
課題
・関数化していない
・特定のサイズに切り出しているので汎用性は低い
・画像数が増えると時間かかりそう(未テスト)
まとめ
作業時間が1時間から1分になりました。
あと、もっといい書き方がある気がする。