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.