Python3.3 で Pillow を使って画像フォーマットプログラムを作成
幅と高さを自動で取得するように取得
# ==================================================
# 画像フォーマット
#
# - 第 1 引数でファイル名を指定
# - 第 2 引数で変換する形式を指定
# ==================================================
# encoding: UTF-8
from PIL import Image # 画像変換用モジュール
import os, re, sys # ファイルパス, 正規表現用モジュール, コマンドライン引数を使用するので
###
# Main
#
def main():
# 引数チェック
if len(sys.argv) > 4:
fileName = sys.argv[1]
format = sys.argv[2]
# ファイルオープン
img = Image.open(fileName, "r")
width, height = img.size
# ファイル名の拡張子より前を取得し, フォーマット後のファイル名に変更
fileName = re.search("(?<!\.)\w+", fileName).group(0) + "." + format
# ファイルの存在チェック
flag = os.path.exists(fileName)
if flag == True:
print("ファイルは既に存在します。")
sys.exit()
# 画像を貼り付けるキャンバスを作成して貼り付け
canvas = Image.new("RGB", (width, height), (255, 255, 255))
canvas.paste(img, (0, 0))
# 画像の保存
canvas.save(fileName, returnFormat(format), quality=100, optimize=True)
else:
print("引数が少なすぎます。\nファイル名と変換するファイルの形式を指定子て下さい。\
\n※フォーマットは小文字で指定して下さい。\
\n例) python imgf.py fileName.jpg bmp 100 100")
###
# returnFormat()
# 渡されたフォーマットを大文字で返す
#
def returnFormat(format):
if format == "bmp":
return "BMP"
elif format == "jpg":
return "JPEG"
elif format == "png":
return "PNG"
elif format == "gif":
return "GIF"
else:
print(format + " は対応していません。")
sys.exit()
if __name__ == "__main__":
main()
参考サイト
http://librabuch.jp/2013/05/python_pillow_pil/
http://d.hatena.ne.jp/fgshun/20080922/1222095288