LoginSignup
0
0

More than 3 years have passed since last update.

【Python3】画像のリサイズをフォルダー単位で行いたいときに使えるコード

Last updated at Posted at 2020-09-28

備忘録やOUTPUT的な意味での蓄積(一気に作った系はこれで終わり)

作成目的

作業用のサイズをすべて変換したいときが定期的に起こったので、作業簡略化のために作成

作成環境

・windows10
・Anaconda3
・python3.7
・Jupyter Notebook

ドキュメント

①resizeしたいフォルダー名を入力(png_folderの一つ上のディレクトリ)
②folderがなければcurrent_folder内に、resize_folder を作成する
③幅と高さを指定し、画像をリサイズ(入力をしなかった場合Errorになる)
④すでに同じフォルダー名がある場合、誤操作を防ぐためにErrorになる

ライブラリの読み込み

All Necessary Libraries.py
import numpy as np
import os
import pathlib
from pathlib import Path
from glob import glob
from PIL import Image
from tqdm import tqdm

PG

image_resize_code
# フォルダ名を入力
folder_name = input('Enter the folder name :')
# pathを取得
p = Path('C:/Users/H3051411/OUT/' + folder_name + '/_png_folder')
new_folder_name = '_resize_folder'
new_folder_path = os.path.join(p, new_folder_name)

# 新しいpathを取得
new_p = Path(new_folder_path)

# フォルダーが存在しない場合リサイズ処理を行う
if not os.path.exists(new_folder_path):
    # 新規フォルダーの作成
    os.makedirs(new_folder_path)
    # 幅と高さの指定
    width = int(input('withsize_input: '))
    height = int(input('height_size_input: '))

    # ファイルをリストで取得
    files = list(p.glob('*.*'))

    # リサイズ処理
    for f in tqdm(files):
        # 画像ファイルを取得
        img = Image.open(f)
        # 最高品質でリサイズ処理
        img_resize = img.resize((width, height), Image.LANCZOS)
        # ファイル名を取得
        imgname = os.path.basename(f)
        # print(imgname) # 確認用
        # 新規ファイル名を設定
        newfname ='resize_' + imgname
        # print(newfname) # 確認用
        # ファイルを保存する(path指定)
        img_resize.save(new_p/newfname)
else:
    # ファイルが存在する場合Errorを返す
    print('Error:resize_folderはすでに存在しています.')

課題

・関数化していない
・画像数が増えると時間かかりそう(未テスト)

まとめ

作業時間が1時間から1分になりました。
あと、もっといい書き方がある気がする。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0