有没有办法将 ImageMagick 的小插图功能与 Wand 一起使用?

Is there a way to use the vignette functionality of ImageMagick with Wand?

我一直在寻找使用 vignette functionality of ImageMagick with Wand 的方法,但我在 Wand 的文档中找不到如何使用它。

是否有隐藏的方法,如果没有,有什么替代方法?

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

抱歉,我不使用 MagickWand 或任何其他 API 编写代码。我假设您只是找不到 vignette 的文档。

糟糕!我看你想要一根不同的魔杖。对不起,我帮不上忙。我在你的 Wand 文档中只看到绘图。

您正在寻找哪种语言替代方案?您可以直接在 ImageMagick(可能是 PythonMagick)中完成。

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

处的 opencv、python 和 numpy vignette

另见 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/

对于 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")