質問

方法を円形の画像のサムネイルを用い枕、マットレス?空間の外側の円は透明でなければならない。

スニペットが評価されて、よろしくお願いします。

役に立ちましたか?

解決

最も簡単な方法では、マスクを商品化しました。を作成し、白黒のマスク形状にしています。-利用 putalpha その形としてアルファ層:

from PIL import Image, ImageOps

mask = Image.open('mask.png').convert('L')
im = Image.open('image.png')

output = ImageOps.fit(im, mask.size, centering=(0.5, 0.5))
output.putalpha(mask)

output.save('output.png')

こちらはマスクを使用した:

alt text


したい場合はサムネイルのサイズを変数を使用でき ImageDraw を描き、マスク:

from PIL import Image, ImageOps, ImageDraw

size = (128, 128)
mask = Image.new('L', size, 0)
draw = ImageDraw.Draw(mask) 
draw.ellipse((0, 0) + size, fill=255)

im = Image.open('image.jpg')

output = ImageOps.fit(im, mask.size, centering=(0.5, 0.5))
output.putalpha(mask)

output.save('output.png')

ご希望の場合は出力GIFそれを使用する必要があり、ペースト機能の代わりに putalpha:

from PIL import Image, ImageOps, ImageDraw

size = (128, 128)
mask = Image.new('L', size, 255)
draw = ImageDraw.Draw(mask)
draw.ellipse((0, 0) + size, fill=0)

im = Image.open('image.jpg')

output = ImageOps.fit(im, mask.size, centering=(0.5, 0.5))
output.paste(0, mask=mask)
output.convert('P', palette=Image.ADAPTIVE)

output.save('output.gif', transparency=0)

おしっかりとした下記のとおり変更:

  • マスクは逆である。白 交換した黒ます。
  • 私に変換する'P'と'適応'パレットで確認できます。その他、枕、マットレスでのみ使用webセーフカラーの結果を悪くします。
  • 私の追加情報の透明性のイメージです。

ご注意ください:が大きな問題です。場合は、GIF画像に含まれる黒部品全に透明にしています。作業できるところにより選別の色の透明性を有する。い"といったご利用PNG形式です。ができない場合はそのできない。

他のヒント

私はすでに受け入れ答えに結果として円をアンチエイリアスするためのソリューションを追加したいと思い、トリックは大きなマスクを生産し、その後ANTIALIASフィルタを使用して、それをスケールダウンすることです。 ここにコードがある

from PIL import Image, ImageOps, ImageDraw

im = Image.open('image.jpg')
bigsize = (im.size[0] * 3, im.size[1] * 3)
mask = Image.new('L', bigsize, 0)
draw = ImageDraw.Draw(mask) 
draw.ellipse((0, 0) + bigsize, fill=255)
mask = mask.resize(im.size, Image.ANTIALIAS)
im.putalpha(mask)

これは私の意見でははるかに良い結果を生成します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top