Python PIL: как сделать область прозрачной в PNG? - PullRequest
12 голосов
/ 07 декабря 2010

Я использовал PIL для обрезки изображений, теперь я также хочу сделать некоторые прямоугольные области прозрачными, скажем

from PIL import Image
im = Image.open("sample.png")
transparent_area = (50,80,100,200)
...

Я бы очень признателен за некоторый код, так как не смог найтиэто, большое спасибо заранее!

Ура,

Хофф

Ответы [ 2 ]

27 голосов
/ 07 декабря 2010
import Image
import ImageDraw
im = Image.open("image.png")
transparent_area = (50,80,100,200)

mask=Image.new('L', im.size, color=255)
draw=ImageDraw.Draw(mask) 
draw.rectangle(transparent_area, fill=0)
im.putalpha(mask)
im.save('/tmp/output.png')

Я научился это делать здесь .

2 голосов
/ 07 декабря 2010

Нет исходного кода, но это общий подход, который должен работать: создать альфа-канал для изображения в режиме «L» (в оттенках серого) в качестве отдельного объекта изображения. Заполните альфа-канал белым цветом (полная непрозрачность) и нарисуйте прямоугольник на изображении альфа-канала черным цветом (полная прозрачность). Преобразуйте изображение, к которому хотите применить прозрачность, в RGBA и используйте метод объекта изображения putalpha(), чтобы скопировать созданный вами альфа-канал в альфа-канал изображения. Сохранить как PNG.

...