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 )

бок о бок с прозрачной

Другие вопросы по тегам