Python wand: составное изображение с прозрачностью
Я пытаюсь составить два изображения с помощью палочки. План состоит в том, чтобы поместить изображение B с правой стороны от A и сделать B 60% прозрачным. С IM это можно сделать так:
composite -blend 60 -geometry +1000+0 b.jpg a.jpg new.jpg
Но с Wand я могу видеть только следующее с composite()
метод: operator, left, top, width, height, image
,
Возможно ли это с помощью Wand?
1 ответ
Для бок о бок, чтобы завершить -geometry +1000+0
Вы можете комбинировать изображения рядом с новым изображением. Для этого примера я использую Image.composite_channel для всего.
with Image(filename='rose:') as A:
with Image(filename='rose:') as B:
B.negate()
with Image(width=A.width+B.width, height=A.height) as img:
img.composite_channel('default_channels', A, 'over', 0, 0 )
img.composite_channel('default_channels', B, 'blend', B.width, 0 )
Обратите внимание, что составной оператор не сильно влияет на приведенный выше пример.
Для достижения -blend 60%
Вы должны создать новый альфа-канал на 60% и "скопировать" его в канал прозрачности источника.
Я создам вспомогательную функцию, чтобы проиллюстрировать эту технику.
def alpha_at_60(img):
with Image(width=img.width,
height=img.height,
background=Color("gray60")) as alpha:
img.composite_channel('default_channels', alpha, 'copy_opacity', 0, 0)
with Image(filename='rose:') as A:
with Image(filename='rose:') as B:
B.negate()
with Image(width=A.width+B.width, height=A.height) as img:
img.composite_channel('default_channels', A, 'over', 0, 0 )
alpha_at_60(B) # Drop opacity to 60%
img.composite_channel('default_channels', B, 'blend', B.width, 0 )