Change 72dpi Screenshot

前回画像を PIL で WebP 化するネタを書いたけど。
どうせならスクリーンショットの 72dpi 化も同時にやりたい。
72dpi にして WebP にして、って二度手間じゃん。

色々試すとそのまま Image.save は全部 72dpi になるらしい。
ということは半分にリサイズしてセーブするだけですね。

import sys, os, re
from PIL import Image

arg = sys.argv[1:]
for s in arg:
    if re.search(r'\.(jpe?g|png|gif)$', s, re.I):
        im = Image.open(s)
        # 144dip to 72dpi
        x, y = im.size
        im_s = im.resize((x//2, y//2), Image.Resampling.LANCZOS)
        im_s.save(f'{os.path.splitext(s)[0]}.webp')

検索でよく見つかる Image.ANTIALIAS は非推奨になっているので注意。
これを前回と同様に Automator でメニューに追加。

mm

ところで前回 .zprofile をフルパスでって書いたけど。
チルダでイケた、ユーザーは自分自身だもんね。

ss

Pillow って思っていたより高機能なんですね、もっと色々やってみよう。
Pillow (PIL Fork) 9.4.0 documentation