2011年3月17日木曜日

ディレクトリにあるPNGファイルのサムネイルを一括作成するPythonスクリプト

某iOSアプリの新しい機能を色々試行錯誤している過程で、あるディレクトリ内の画像ファイルを一括してサムネイル化できたら楽できそうだったのでそういうスクリプトを書いてみました。

PILのインストールが必要です。

import os, sys
import Image

thumbnail_dir_name = 'Thumbnail' // サムネイルを格納するディレクトリ名

dir = os.getcwd()
if len(sys.argv) > 1: dir = sys.argv[1]

try:
    files = os.listdir(dir)

    // サムネイル用のディレクトリ(存在しなければ作成する)
    thumb_dir = os.path.join(dir, thumbnail_dir_name)
    if not os.access(thumb_dir, os.F_OK): os.mkdir(thumb_dir)

    for infile in files:
        try:
            f, e = os.path.splitext(infile)                   
            if e.lower() != '.png': continue // 拡張子がpng以外のファイルははじく

            im = Image.open(infile)
            if im.mode != "RGBA": im = im.convert("RGBA")

            size = 30,30 // サイズ: 30px x 30px
            im.thumbnail(size, Image.ANTIALIAS)

            // サムネイルのファイル名に"-thumb"というサフィックスを付けて保存
            im.save(os.path.join(thumb_dir, f + "-thumb.png"), 'png')
        except IOError:
            print "cannot convert %s", infile
except OSError, e:
    print "OSError: %s" % e
このスクリプトを例えばmake_thumbnails.pyという名前で保存して、画像が置いてあるディレクトリに放り込みます。
$ python make_thumbnails.py
ターミナルで上のコマンドを叩けば、そのディレクトリ内にThumbnailという新しいディレクトリが作成され、その中にサムネイル一式が作成されます。

個人的な理由から上のスクリプトは下のような制限があります。
書き直すのは簡単なのでご利用の際はご注意を。
  • PNGファイル限定
  • サムネイルサイズ固定
  • サムネイルのディレクトリ名やファイル名が決め打ち

0 件のコメント: