我一直在寻找一种方法来使用vignette functionality的Wand ImageMagick,但我无法在Wand的文档中找到该怎么做。
是否有一种隐藏的方法可以做到这一点,如果没有,有什么替代方案?
答案 0 :(得分:1)
对于python的wand库,您需要使用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)。
中的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/