有没有办法使用Wand的ImageMagick的晕影功能?

时间:2017-05-19 01:56:22

标签: python imagemagick wand

我一直在寻找一种方法来使用vignette functionalityWand ImageMagick,但我无法在Wand的文档中找到该怎么做。

是否有一种隐藏的方法可以做到这一点,如果没有,有什么替代方案?

2 个答案:

答案 0 :(得分:1)

对于python的库,您需要使用library.api模块实现C-API。

import ctypes
from wand.api import library
from wand.image import Image

# Define C-API
library.MagickVignetteImage.argtypes = [ctypes.c_void_p,  # Wand
                                        ctypes.c_double,  # Radius
                                        ctypes.c_double,  # Sigma
                                        ctypes.c_long,    # x
                                        ctypes.c_long]    # y
# Warning: `x' & `y' are ssize_t. Usually the same size as size_t, or long type.

# Extent Image class with new method
class VignetteImage(Image):
    def vignette(self, radius=0.0, sigma=0.0, offset_x=0, offset_y=0):
        library.MagickVignetteImage(self.wand,
                                    radius,
                                    sigma,
                                    offset_x,
                                    offset_y)

# Usage
with VignetteImage(filename="rose:") as rose:
    rose.vignette(0.0, 5.0)
    rose.save(filename="RoseVignette.png")

答案 1 :(得分:0)

请参阅ImageMagick Wand文档中的http://www.imagemagick.org/api/magick-image.php#MagickVignetteImage

抱歉,我不会在MagickWand或任何其他API中编码。我假设你找不到小插图的文档。

OOPS!我看到你想要一个不同的魔杖。对不起,我无能为力。除了画在你的魔杖文档中,我什么也看不见。

您正在寻找什么语言替代方案?你可以直接在ImageMagick中进行(可能是PythonMagick)。

另见https://www.packtpub.com/mapt/book/application_development/9781785283932/2/ch02lvl1sec25/creating-a-vignette-filter

中的opencv,python和numpy小插图

另见https://github.com/alexjohnson505/image-filter/blob/master/image-filter.py

另见https://imagepy.wordpress.com/2015/11/21/raw-image-processing-in-python-an-example/