2020年5月18日月曜日

開発環境

退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング (Al Sweigart(著)、相川 愛三(翻訳)、オライリージャパン)の第Ⅱ部(処理の自動化)、17章(画像の操作)、17.7(演習プロジェクト)、17.7.1(章プロジェクトの改造と修正)の解答を求めてみる。

コード

#!/usr/bin/env python3
import os
from PIL import Image

SQUARE_FIT_SIZE = 300
LOGO_FILENAME = 'catlogo.png'


logo_im = Image.open(LOGO_FILENAME)
logo_width, logh_height = logo_im.size

os.makedirs('withlogo', exist_ok=True)

for filename in os.listdir('.'):
    ext = filename[-4:].lower()
    filename = filename.lower()
    if (ext not in ['.png', '.jpg', '.gif', '.bmp']) or \
            filename == LOGO_FILENAME:
        continue
    im = Image.open(filename)
    im.thumbnail((SQUARE_FIT_SIZE, SQUARE_FIT_SIZE))
    width, height = im.size
    if width < 2 * logo_width or height < 2 * logh_height:
        continue
    print(f'ロゴを追加中 {filename}…')
    im.paste(logo_im, (width-logo_width, height-logo_width), logo_im)
    im.save(os.path.join('withlogo', filename))

入出力結果(Zsh、PowerShell、Terminal、Jupyter(IPython))

% ls *.{png,jpg,gif,bmp}
catlogo.png* small.png* zophie.gif* zophie.png*
flower.png* zohpie.bmp* zophie.jpg*
% open *.{png,jpg,gif,bmp}
% ./resizeandaddlogo.py 
ロゴを追加中 zophie.gif…
ロゴを追加中 zohpie.bmp…
ロゴを追加中 zophie.png…
ロゴを追加中 zophie.jpg…
% ls withlogo 
./  zohpie.bmp zophie.jpg
../  zophie.gif zophie.png
% open withlogo/*
% 

0 コメント:

コメントを投稿