LoginSignup
6
6

More than 5 years have passed since last update.

Pythonで丸く切りぬいたサムネイルを生成する

Last updated at Posted at 2015-04-30

Pythonで、丸く切りぬいた画像を生成する方法。

基本的には、元画像を正方形にして、丸でマスクするだけだけど、PIL (Pillow) のImage、ImageDrawとか使うとアンチエイリアスが効かなくて汚くしか切り抜けない。

PIL (Pillow) だと、resize、thumbnailしか、アンチエイリアスとかフィルタの設定ができないみたい。
stackoverflow

解決策は、以下のとおり。
* マスク画像は、事前に8ビットグレイスケールで準備する。(透過で準備したらダメだった。マスク画像を、8ビットのグレイスケール画像にして、putalphaでアルファ値として適用するので、透過画像で準備すると、グレイスケールにする際に画像が荒くなっちゃうみたいでダメだったあ。アルファ値として使うんで、白が見えるとこ、黒が切り抜かれるところになる。)
* 正方形に切りぬいた画像に、putalphaでマスク画像を適用。

from PIL import Image, ImageOps
mask = Image.open("マスク画像のパス")
org = Image.open("元画像のパス")
sq = ImageOps.fit(sq, (400, 400), method = Image.LANCZOS)
sq.putalpha(mask.convert("L"))
sq.save("丸く切りぬいた画像の保存先のパス")

参考にしたページ。
stackoverflow

他にも、Cairoaggdraw とかの画像ライブラリを使うのもいいみたいだけど、メンテがされてなさそうだから使わなかった。
Quora

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6