如何使用 Wand 使图像的背景透明?

How to make the background of an image transparent with Wand?

我有一个白色背景的图像,想将白色背景转换为透明。我如何使用 Wand 执行此操作?

执行此操作的 ImageMagick 命令是:

convert ~/Desktop/cat_with_white_gb.png -transparent white ~/Desktop/cat_with_transparent_bg.png

我试过:

import urllib2

fg_url = 'http://i.stack.imgur.com/Mz9y0.jpg'
fg = urllib2.urlopen(fg_url)

with Image(file=fg) as img:
    img.background_color = Color('transparent')
    img.save(filename='test.png')

with Image(file=fg) as fg_img:
    with Color('#FFF') as white:
        fg_img.transparent_color(white, 0.0)

需要记住的重要一点是 JPEG 源图像没有 alpha 通道。您可以通过定义 wand.image.Image.alpha_channel 来添加它,或者只是将图像格式设置为可以使用透明度的格式。

from wand.image import Image
from wand.color import Color

with Image(filename="http://i.stack.imgur.com/Mz9y0.jpg") as img:
    img.format = 'png'
    with Color('#FDFDFD') as white:
        twenty_percent = int(65535 * 0.2)  # Note: percent must be calculated from Quantum
        img.transparent_color(white, alpha=0.0, fuzz=twenty_percent)
    img.save(filename="/tmp/Mz9y0.png")

也许这个例子中20%的fuzz太过激进了