Method: Magick::Image#ordered_dither
- Defined in:
- ext/RMagick/rmimage.cpp
#ordered_dither(threshold_map = '2x2') ⇒ Magick::Image
Dithers the image to a predefined pattern. The threshold_map argument defines the pattern to use.
-
Default threshold_map is ‘2x2’
-
Order of threshold_map must be 2, 3, or 4.
10341 10342 10343 10344 10345 10346 10347 10348 10349 10350 10351 10352 10353 10354 10355 10356 10357 10358 10359 10360 10361 10362 10363 10364 10365 10366 10367 10368 10369 10370 10371 10372 10373 10374 10375 10376 10377 10378 10379 10380 10381 10382 10383 10384 10385 10386 10387 10388 10389 10390 10391 10392 10393 10394 10395 |
# File 'ext/RMagick/rmimage.cpp', line 10341
VALUE
Image_ordered_dither(int argc, VALUE *argv, VALUE self)
{
Image *image, *new_image;
int order;
const char *threshold_map = "2x2";
ExceptionInfo *exception;
image = rm_check_destroyed(self);
if (argc > 1)
{
rb_raise(rb_eArgError, "wrong number of arguments (%d for 0 or 1)", argc);
}
if (argc == 1)
{
if (TYPE(argv[0]) == T_STRING)
{
threshold_map = StringValueCStr(argv[0]);
}
else
{
order = NUM2INT(argv[0]);
if (order == 3)
{
threshold_map = "3x3";
}
else if (order == 4)
{
threshold_map = "4x4";
}
else if (order != 2)
{
rb_raise(rb_eArgError, "order must be 2, 3, or 4 (%d given)", order);
}
}
}
new_image = rm_clone_image(image);
exception = AcquireExceptionInfo();
#if defined(IMAGEMAGICK_7)
GVL_STRUCT_TYPE(OrderedDitherImage) args = { new_image, threshold_map, exception };
CALL_FUNC_WITHOUT_GVL(GVL_FUNC(OrderedDitherImage), &args);
#else
GVL_STRUCT_TYPE(OrderedPosterizeImage) args = { new_image, threshold_map, exception };
CALL_FUNC_WITHOUT_GVL(GVL_FUNC(OrderedPosterizeImage), &args);
#endif
rm_check_exception(exception, new_image, DestroyOnError);
DestroyExceptionInfo(exception);
return rm_image_new(new_image);
}
|