用Python的Wand合成两幅图像

10 投票
2 回答
9007 浏览
提问于 2025-04-17 17:29

我想用python的wand库(这是一个和image-magick相关的库)来创建一个合成图像,但我在弄清楚如何做其他事情时遇到了一些困难。目前我只能简单地把前景图像复制粘贴到背景图像上。我的目标是,假设我有两张图片,分别是:

foreground

enter image description here

这两张都是jpeg格式的。我想去掉猫咪的白色背景,然后把它粘贴到房间的图片上。如果有其他python图像模块(比如PIL)的解决方案也可以,我只需要一些方法来自动化这个合成过程。提前谢谢大家。

2 个回答

2

对于未来可能会看到这个内容的人来说,你可能想要做的是在合成之前,把猫咪图片中的“白色”部分变成透明。这可以通过使用图像的 'transparent_color()' 方法来实现。你可以这样写:'fg_img.transparent_color(wand.color.Color('#FFF')),可能还需要加一个模糊参数。

参考链接: http://www.imagemagick.org/Usage/compose/ http://docs.wand-py.org/en/latest/wand/image.html

17

你可以使用 Image.composite() 这个方法来实现这个功能:

import urllib2

from wand.image import Image
from wand.display import display


fg_url = 'https://i.stack.imgur.com/Mz9y0.jpg'
bg_url = 'https://i.stack.imgur.com/TAcBA.jpg'

bg = urllib2.urlopen(bg_url)
with Image(file=bg) as bg_img:
    fg = urllib2.urlopen(fg_url)
    with Image(file=fg) as fg_img:
        bg_img.composite(fg_img, left=100, top=100)
    fg.close()
    display(bg_img)
bg.close()

撰写回答