Python Imaging Libraryで縦長・横長の写真を振り分け

いまどきのモニターやカメラはワイド!
横長に構えて撮った写真はモニターを横長にして見たいし、縦長に構えて撮った写真はモニターを縦長にして見たい。
Windowsエクスプローラーは写真の縦長・横長を振り分けてくれない(と思う)。
手作業はいや。

furiwake.py

#coding: cp932

import glob
import os
import shutil

from PIL import Image

def furiwake(abspath):
  src_list = glob.glob(os.path.join(abspath, "*.jpg"))
  tatenaga = os.path.join(abspath, "tatenaga")
  yokonaga = os.path.join(abspath, "yokonaga")
  if not os.path.exists(tatenaga):
    os.mkdir(tatenaga)
  if not os.path.exists(yokonaga):
    os.mkdir(yokonaga)
  for src in src_list:
    im = Image.open(src)
    yoko, tate = im.size
    del im
    if yoko == tate:
      continue
    if yoko < tate:
      dst = os.path.join(tatenaga, os.path.basename(src))
      if not os.path.exists(dst):
        shutil.move(src, dst)
    if yoko > tate:
      dst = os.path.join(yokonaga, os.path.basename(src))
      if not os.path.exists(dst):
        shutil.move(src, dst)

PILが関わるのはこれだけ。簡単!

from PIL import Image
im = Image.open(src)
yoko, tate = im.size
del im

使い方

import furiwake
furiwake.furiwake("振り分けたい写真たちがあるフォルダの絶対パス")

Python Imaging Library
http://www.pythonware.com/library/pil/handbook/index.htm