如何通过DistortMethod?

时间:2017-03-31 11:32:20

标签: c lua ffi luajit

我一直在使用名为MagickWand的ImageMagick的C API。在MagickDistortImage中,我不知道如何传递第二个参数。以下是我的代码。

lib.lua

ffi.cdef([[  typedef void MagickWand;
  MagickBooleanType MagickDistortImage(MagickWand *wand, const DistortMethod method, const size_t, const double *args, const MagickBooleanType bestfit);
]])

image.lua

local arg = ffi.new("const double[?]",{115.23})
local tt =  handle_result(self, lib.MagickDistortImage(self.wand, Plane2CylinderDistortion, 1, arg, 1))

在上面的代码中,我不知道如何传递第二个参数。

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。 const DistortMethod method,它接受​​枚举,所以我只需将其定义为整数并传递整数值。所以我修改了我的代码。

<强> lib.lua

ffi.cdef([[  
typedef void MagickWand;
typedef const int DistortMethod;
MagickBooleanType MagickDistortImage(MagickWand *wand, DistortMethod method, const size_t, const double *args, const MagickBooleanType bestfit);
]])

<强> image.lua

local arg = ffi.new("const double[?]",{115.23})
--here 10 is used for 'plane2cylinder' method
local tt =  handle_result(self, lib.MagickDistortImage(self.wand, 10, 1, arg, 1))