Python PIL: как сделать область прозрачной в PNG?

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

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

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

спасибо,

Хофф

2 ответов


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')

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


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