Method: Magick::Image#ordered_dither
- Defined in:
- ext/RMagick/rmimage.c
permalink #ordered_dither(*args) ⇒ Object
Perform ordered dither on image.
Ruby usage:
- @verbatim Image#ordered_dither @endverbatim
- @verbatim Image#ordered_dither(threshold_map) @endverbatim
Notes:
- Default threshold_map is '2x2'
- Order of threshold_map must be 2, 3, or 4.
- If using ImageMagick >= 6.3.0, order can be any of the threshold strings
listed by "convert -list Thresholds"
- Does not call OrderedDitherImages anymore. Sometime after ImageMagick
6.0.0 it quit working. Uses the same routines as ImageMagick and
GraphicsMagick for their "ordered-dither" option.
9509 9510 9511 9512 9513 9514 9515 9516 9517 9518 9519 9520 9521 9522 9523 9524 9525 9526 9527 9528 9529 9530 9531 9532 9533 9534 9535 9536 9537 9538 9539 9540 9541 9542 9543 9544 9545 9546 9547 9548 9549 9550 9551 9552 9553 9554 9555 9556 9557 9558 |
# File 'ext/RMagick/rmimage.c', line 9509
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 = StringValuePtr(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);
GetExceptionInfo(&exception);
// ImageMagick >= 6.2.9
(void) OrderedPosterizeImage(new_image, threshold_map, &exception);
rm_check_exception(&exception, new_image, DestroyOnError);
(void) DestroyExceptionInfo(&exception);
return rm_image_new(new_image);
}
|