Python 2.7 如何使用python wand执行ImageMagick渐变调用

Python 2.7 如何使用python wand执行ImageMagick渐变调用,python-2.7,imagemagick,wand,Python 2.7,Imagemagick,Wand,试图将ImageMagick命令转换为Python Wand代码,但我看不到使用Wand创建渐变图像的方法 convert -size 800x800 gradient:"rgba(0,0,0,0.12)-rgba(0,0,0,1)" gradient_overlay.png convert gradient_overlay.png background.png -compose Overlay -composite -depth 8 background_gradient.p

试图将ImageMagick命令转换为Python Wand代码,但我看不到使用Wand创建渐变图像的方法

    convert -size 800x800 gradient:"rgba(0,0,0,0.12)-rgba(0,0,0,1)" gradient_overlay.png

    convert gradient_overlay.png background.png -compose Overlay -composite -depth 8 background_gradient.png
有人知道我如何用魔杖做到这一点吗?

与魔杖一起使用的ImageMagick等效物

我并没有用过魔杖,但我可以通过参考ImageMagick向你们展示如何使用它。可以创建新的透明图像。然后使用fx操作符将alpha通道修改为渐变

等效棒参考为:

创建默认的新透明图像-请参见

使用fx将alpha通道转换为渐变-请参见

下面是我如何得到外汇公式的:

您希望顶部0.12为12%灰色,底部1.0为100%灰色/白色。因此,我们采用以下公式:

c = a*j + b

At j=0 the top, you need 0.12, so

0.12 = a*0 + b -->  b = 0.12

At j=(h-1) the bottom, you want 1, so 

1 = a*(h-1) + 0.12 --> a = (1-0.12)/(h-1)

So the equation is:

c = j*(1-0.12)/(h-1) + 0.12
h是图像800的高度。

与魔杖一起使用的ImageMagick等效物

我并没有用过魔杖,但我可以通过参考ImageMagick向你们展示如何使用它。可以创建新的透明图像。然后使用fx操作符将alpha通道修改为渐变

等效棒参考为:

创建默认的新透明图像-请参见

使用fx将alpha通道转换为渐变-请参见

下面是我如何得到外汇公式的:

您希望顶部0.12为12%灰色,底部1.0为100%灰色/白色。因此,我们采用以下公式:

c = a*j + b

At j=0 the top, you need 0.12, so

0.12 = a*0 + b -->  b = 0.12

At j=(h-1) the bottom, you want 1, so 

1 = a*(h-1) + 0.12 --> a = (1-0.12)/(h-1)

So the equation is:

c = j*(1-0.12)/(h-1) + 0.12

h是图像800的高度。

以下是我如何基于fmw42反馈解决它的

with Color('black') as blackColor:
with Image(width=800, height=800, background=blackColor) as black:
    blackPath = existing[:existing.rfind('/') + 1] + 'black.png'
    with Color('white') as whiteColor:
        with Image(width=800, height=800, background=whiteColor) as alpha:
            fxFilter = "(j*(1-0.12)/(h-1)+0.12)"
            with alpha.fx(fxFilter) as filteredImage:
                black.composite_channel('default_channels', filteredImage, 'copy_opacity', 0, 0)
                black.save(filename=blackPath)

下面是我如何基于fmw42反馈解决它的

with Color('black') as blackColor:
with Image(width=800, height=800, background=blackColor) as black:
    blackPath = existing[:existing.rfind('/') + 1] + 'black.png'
    with Color('white') as whiteColor:
        with Image(width=800, height=800, background=whiteColor) as alpha:
            fxFilter = "(j*(1-0.12)/(h-1)+0.12)"
            with alpha.fx(fxFilter) as filteredImage:
                black.composite_channel('default_channels', filteredImage, 'copy_opacity', 0, 0)
                black.save(filename=blackPath)

您需要分配一个wand实例,设置画布大小,然后读取伪图像格式

从wand.image导入图像 从wand.api导入库 将图像作为画布: library.MagickSetSizecanvas.wand,800800 canvas.readfilename=渐变:rgba0,0,0,0.12-rgba0,0,0,1 canvas.savefilename=gradient\u overlay.png
您需要分配一个wand实例,设置画布大小,然后读取伪图像格式

从wand.image导入图像 从wand.api导入库 将图像作为画布: library.MagickSetSizecanvas.wand,800800 canvas.readfilename=渐变:rgba0,0,0,0.12-rgba0,0,0,1 canvas.savefilename=gradient\u overlay.png
谢谢你的解释,你建议我能够解决这个问题。你可以发回你的魔杖代码,这样其他人可以从中受益。提供如下。谢谢你添加。但我上面回答中的代码可能会为您提供一种更简短、更直接的魔杖方法。感谢您的解释,并建议我能够解决此问题。您可以发回您的魔杖代码,以便其他人可以从中受益。提供如下。感谢您添加此内容。但上面我的答案中的代码可能会为您提供一个更简短、更直接的Wand方法。