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


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

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

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

Ура,

Хофф

2 10

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 и используйте метод image object putalpha() для копирования созданного Альфа-канала в альфа-канал изображения. Сохранить как PNG.