Method: Magick::Image#contrast

Defined in:
ext/RMagick/rmimage.cpp

#contrast(sharpen = false) ⇒ Magick::Image

Enhance the intensity differences between the lighter and darker elements of the image.

Returns a new image.

Parameters:

  • sharpen (Boolean) (defaults to: false)

    If sharpen is true, the contrast is increased, otherwise it is reduced.

Returns:



4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
# File 'ext/RMagick/rmimage.cpp', line 4512

VALUE
Image_contrast(int argc, VALUE *argv, VALUE self)
{
    Image *image, *new_image;
    MagickBooleanType sharpen = MagickFalse;
#if defined(IMAGEMAGICK_7)
    ExceptionInfo *exception;
#endif

    image = rm_check_destroyed(self);
    if (argc > 1)
    {
        rb_raise(rb_eArgError, "wrong number of arguments (%d for 0 or 1)", argc);
    }
    else if (argc == 1)
    {
        sharpen = (MagickBooleanType)RTEST(argv[0]);
    }

    new_image = rm_clone_image(image);

#if defined(IMAGEMAGICK_7)
    exception = AcquireExceptionInfo();
    GVL_STRUCT_TYPE(ContrastImage) args = { new_image, sharpen, exception };
    CALL_FUNC_WITHOUT_GVL(GVL_FUNC(ContrastImage), &args);
    rm_check_exception(exception, new_image, DestroyOnError);
    DestroyExceptionInfo(exception);
#else
    GVL_STRUCT_TYPE(ContrastImage) args = { new_image, sharpen };
    CALL_FUNC_WITHOUT_GVL(GVL_FUNC(ContrastImage), &args);
    rm_check_image_exception(new_image, DestroyOnError);
#endif

    return rm_image_new(new_image);
}