當前位置:編程學習大全網 - 源碼下載 - python的pillow用ImageDraw.Draw.polygon如何填充半透明的顏色

python的pillow用ImageDraw.Draw.polygon如何填充半透明的顏色

>> fill = (200, 10, 10, 0.5)

對於RGBA模式的圖片,填充半透明色,alpha位置取值是0-255,妳希望50%,應該是用128,不是0。5

>> 我這裏畫了壹個比如三角形,準備再畫壹個三角形,也是半透明的,那麽這兩個顏色是可以混合起來的吧?

直接在同壹個Image上繪圖是不行的。後面畫的會直接覆蓋前面的,顏色不會自動融合。如果想要融合的效果,需要用Image.blend(im1, im2, 0.5)或者Image.composite(im1, im2, mask)其中mask需要帶alpha參數,可以設置為128.

#!/usr/bin/env?python2

#?coding=utf-8

"""

draw?shapes?and?fill?shap?with?transparent?color?and?overlap?them.

"""

from?PIL?import?Image,?ImageDraw

def?main():

im?=?Image.new("RGBA",?(800,?800))

draw?=?ImageDraw.Draw(im)

draw.rectangle((0,?0,?200,?200),?fill=(255,?0,?0,?128))

draw.rectangle((400,?400,?600,?600),?fill=(255,?0,?0))

im2?=?Image.new("RGBA",?(800,?800))

draw2?=?ImageDraw.Draw(im2)

draw2.rectangle((100,?100,?300,?300),?fill=(0,?255,?0,?128))

draw2.rectangle((500,?500,?700,?700),?fill=(0,?255,?0))

#?merge?two?images?using?blend

blend?=?Image.blend(im,?im2,?0.5)

#?drawf?=?ImageDraw.Draw(blend)

#?drawf.rectangle((500,?100,?600,?200),?fill=(255,?0,?0))

#?drawf.rectangle((600,?200,?700,?300),?fill=(0,?255,?0))

blend.save("/home/sylecn/d/blend.png")

#?merge?two?images?using?composite

ones?=?Image.new("RGBA",?(800,?800))

_draw?=?ImageDraw.Draw(ones)

_draw.rectangle((0,?0,?800,?800),?fill=(255,?255,?255,?128))

final?=?Image.composite(im,?im2,?ones)

final.save("/home/sylecn/d/composite.png")

if?__name__?==?'__main__':

main()

  • 上一篇:為什麽我的手機會突然卡
  • 下一篇:玲瓏二分指數源代碼
  • copyright 2024編程學習大全網