Method: Magick::Image#convolve
- Defined in:
- ext/RMagick/rmimage.c
permalink #convolve(order_arg, kernel_arg) ⇒ Object
Apply a custom convolution kernel to the image.
Ruby usage:
- @verbatim Image#convolve(order, kernel) @endverbatim
4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 |
# File 'ext/RMagick/rmimage.c', line 4098
VALUE
Image_convolve(VALUE self, VALUE order_arg, VALUE kernel_arg)
{
Image *image, *new_image;
double *kernel;
unsigned int x, order;
ExceptionInfo exception;
image = rm_check_destroyed(self);
order = NUM2UINT(order_arg);
kernel_arg = rb_Array(kernel_arg);
rm_check_ary_len(kernel_arg, (long)(order*order));
// Convert the kernel array argument to an array of doubles
kernel = (double *)ALLOC_N(double, order*order);
for (x = 0; x < order*order; x++)
{
kernel[x] = NUM2DBL(rb_ary_entry(kernel_arg, (long)x));
}
GetExceptionInfo(&exception);
new_image = ConvolveImage((const Image *)image, order, (double *)kernel, &exception);
xfree((void *)kernel);
rm_check_exception(&exception, new_image, DestroyOnError);
(void) DestroyExceptionInfo(&exception);
rm_ensure_result(new_image);
return rm_image_new(new_image);
}
|