よちよちpython

独習 python/Qpython/Pydroid3/termux

【Pillow】Pythonで画像のサイズと解像度変更

何も考えずこのブログに画像を貼り付けているが、投稿あたりの容量が決まっている? 画像として表示されない場合がある。
取り急ぎ、画像圧縮をやる。



画像処理用モジュールPillowを使う。インストールが必要。

pip install pillow



ファイルの容量を取得


import os

file_path = "何とか.png"
file_size = os.path.getsize(file_path)

print(file_size)



Image.resize(size, resample=0)sizeタプルで(width,height) を、resampleで解像度のフィルター6段階設定。

解像度フィルターは次の6段階。

  • NEAREST
  • BOX
  • BILINEAR
  • HAMMING
  • BICUBIC
  • LANCZOS

指定なしでデフォルトのNEAREST

画像処理用モジュール Pillowを使うのでインストール。

pip install pillow



画像のサイズを取得


指定した画像の高さと幅を調べる。

from PIL import Image

# 画像ファイル名指定
file_name = "ほにゃらら.jpg"

# 入力画像の読み込み
img = Image.open(file_name)

width, height = img.size

# 画像の幅を表示
print('width:', width)

# 画像の高さを表示
print('height:',height)
width: 250
height: 333

サイズを指定して拡大縮小


from PIL import Image

img = Image.open('何とか.png')

img_resize = img.resize((256, 256))
img_resize.save('リサイズ何とか.jpg')

比率で拡大縮小


サイズを同比率10分の1、解像度は設定6段階の内の最も高いものに指定した例。

# サイズ変更後のファイル名
resize_file = "resize_" + file_name


img_resize_lanczos = img.resize((width, height), Image.LANCZOS)
img_resize.lanczos = img.resize((int(img.width / 10), int(img.height / 10)))
img_resize_lanczos.save(resize_file)

参考


追記
はてなブログにアップした画像の編集ができるらしい。