画像ファイルサイズ変更(Mac)
概要
- Mac コマンドで → sip
- Python ライブラリで → Pillow
画像リサイズ (Macで)
縦横比キープで幅だけ縮める
bash
sips --resampleWidth 300 変更前.jpg --out 変更後.jpg
今のサイズ確認
bash
sips -g all a.jpg
sips -g pixelWidth -g pixelHeight a.jpg
撮影時刻?
bash
sips -g creation a.jpg
真ん中あたりで切り抜く
ImageMagick (convertコマンド) を使う (brew install ImageMagick
)
bash
convert 変更前.jpg -crop '2048x1536+344+0' 変更後.jpg
- Width, Height, OffsetX, OffsetY の順
- 例は、縦横比を変えようとして、高さは変えず横幅を狭めるが、真ん中に寄せたいので、X 方向にオフセットした
Python でのメモ
bash
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade Pillow
py
#!/usr/bin/env python3
import os
import sys
import math
from PIL import Image
def get_new_fname(fname):
(f, e) = os.path.splitext(fname)
return f + '.new' + e
base_w = 4
base_h = 3
fname_org = sys.argv[1]
img = Image.open(fname_org)
fname_new = get_new_fname(fname_org)
print(fname_new)
(w, h) = img.size
gcd = math.gcd(h, w)
print('%d : %d' % (w, h))
print('%d : %d' % (w / gcd, h / gcd))
if (w / gcd) == base_w and (h / gcd) == base_h:
print('%d : %d is ok' % (base_w, base_h))
sys.exit()
if base_w < base_h or w < h:
print('w < h not supported')
sys.exit()
print('resize')
# この辺、4:3 でなかったら端数でそうではあるけど
expected_h = int(h - (h % base_h))
expected_w = int(expected_h * base_w / base_h)
start_x = int((w - expected_w) / 2)
start_y = 0
end_x = start_x + expected_w
end_y = expected_h
size = (start_x, start_y, end_x, end_y)
print(size)
img.crop(size).save(fname_new)