何かしらのシステムでサムネイル画像を生成するとき、元の画像形式によらずサムネイル画像はJPEGで生成したい場合がある。(ファイルハンドリング、ファイルサイズ圧縮)
ポイントは4行目の.convert('RGB')
thumbnail.py
THUMB_SIZE = 250 # 生成したいサムネイル画像のサイズを指定
ORIGINAL_DIR = "/resource/path/original"
THUMB_DIR = "/resource/path/thumbnail"
img = Image.open(ORIGINAL_DIR, 'r').convert('RGB')
img.thumbnail((THUMB_SIZE, THUMB_SIZE), Image.ANTIALIAS) # 長辺が指定したサイズに収まるようにサムネイル画像を生成
img.save(THUMB_DIR + "/" + hash_name + ".jpg", format="JPEG", quality=75, optimize=True)
実行結果
画像貼ってて気づいたんですけど、画像をアップロードするとS3のアドレスを直に表示するQiitaの仕様、なかなかアグレッシブですね。
透明箇所を含まないJPEG以外の画像
北斎にしようと思ったのですが北斎ちゃん引けなかったので歌川広重です。
形式はgifです。
オッケーオッケー。
この他BMPでも問題なく出力された。
透明箇所を含むPNG画像
グワーッ!
どうやら透明レイヤーの下に隠されている色が見えてしまう模様。