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