3
from PIL import Image
from PIL import ImageDraw
from io import BytesIO
from urllib.request import urlopen
url = "https://i.ytimg.com/vi/W4qijIdAPZA/maxresdefault.jpg"
file = BytesIO(urlopen(url).read())
img = Image.open(file)
img = img.convert("RGBA")
draw = ImageDraw.Draw(img, "RGBA")
draw.rectangle(((0, 00), (img.size[0], img.size[1])), fill=(0,0,0,127))
img.save('dark-cat.jpg')
這給了我一個巨大的黑色方塊。我希望它是一隻帶貓的半透明黑色方形。有任何想法嗎?PIL在圖像上畫一個半透明的方形覆蓋物
感謝您的幫助。我剛剛創建了一個新問題:https://github.com/python-pillow/Pillow/issues/2496 –
@ChaseRoberts它不是一個錯誤,它是對「Draw」應該做什麼的誤解。它不會混合,它會用一組新像素替換一組像素。 [文檔中的示例](http://pillow.readthedocs.io/en/3.1.x/reference/ImageDraw.html#example-draw-partial-opacity-text)顯示這是一個兩步過程,在空白畫布上用不透明度繪圖,然後合成結果。如本答案的第二部分所示。 –
@MarkRansom:事實上,我的解決方法就是這樣做(一般來說)。 – martineau