LoginSignup
9
8

More than 5 years have passed since last update.

Python で画像フォーマット

Last updated at Posted at 2013-10-17

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

9
8
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
9
8