gpt4 book ai didi

python 魔杖 : composite image with transparency

转载 作者:太空宇宙 更新时间:2023-11-04 03:32:51 24 4
gpt4 key购买 nike

我正在尝试使用 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 有可能吗?

最佳答案

要并排完成-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 )

side-by-side

请注意,复合运算符在上面的示例中并没有产生太大影响。

要达到 -blend 60%,您需要创建一个 60% 的新 alpha channel ,并将其“复制”到源不透明度 channel 。

我将创建一个辅助函数来说明此技术。

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 )

side-by-side with transparenct

关于 python 魔杖 : composite image with transparency,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30377602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com