尝试使用python使用MagickWand方法为图像添加水印

时间:2016-05-12 09:53:22

标签: python c imagemagick ctypes watermark

我在通过ctypes集成Python和C时遇到了问题。

问题在于MagicSteganoImage方法,这个方法返回0因此无法写出最终结果。

有人帮帮我吗?感谢所有人。

path="path/photo.png"
markpath="path/mark.png"
libwand=CDLL("libMagickWand-6.Q16.so.2")
libwand.MagickWandGenesis()
mw=libwand.NewMagickWand()
libwand.MagickReadImage(mw,path)
mark=libwand.NewMagickWand()
libwand.MagickReadImage(mark,markpath)
result=libwand.NewMagickWand()
result = libwand.MagickSteganoImage(mw,mark,0)
libwand.MagickWriteImage(result,dest)

1 个答案:

答案 0 :(得分:2)

必须告诉python如何与C API进行交互。

from ctypes import *
libwand=CDLL("libMagickWand-6.Q16.so.2")
# Communicated how python should handle ctypes
libwand.NewMagickWand.restype = c_void_p
libwand.MagickReadImage.argtypes = (c_void_p, c_char_p)
libwand.MagickSteganoImage.argtypes = (c_void_p, c_void_p, c_int)
libwand.MagickSteganoImage.restype = c_void_p
libwand.MagickWriteImage.argtypes = (c_void_p, c_char_p)
# ... work

除了构建错误处理以与C-API异常交互。

如需其他帮助,您可以评估source code