Method: Magick::Image#solarize
- Defined in:
- ext/RMagick/rmimage.cpp
#solarize(threshold = 50.0) ⇒ Object
Apply a special effect to the image, similar to the effect achieved in a photo darkroom by selectively exposing areas of photo sensitive paper to light. Threshold ranges from 0 to QuantumRange and is a measure of the extent of the solarization.
13313 13314 13315 13316 13317 13318 13319 13320 13321 13322 13323 13324 13325 13326 13327 13328 13329 13330 13331 13332 13333 13334 13335 13336 13337 13338 13339 13340 13341 13342 13343 13344 13345 13346 13347 13348 13349 13350 13351 13352 13353 |
# File 'ext/RMagick/rmimage.cpp', line 13313
VALUE
Image_solarize(int argc, VALUE *argv, VALUE self)
{
Image *image, *new_image;
double threshold = 50.0;
#if defined(IMAGEMAGICK_7)
ExceptionInfo *exception;
#endif
image = rm_check_destroyed(self);
switch (argc)
{
case 1:
threshold = NUM2DBL(argv[0]);
if (threshold < 0.0 || threshold > QuantumRange)
{
rb_raise(rb_eArgError, "threshold out of range, must be >= 0.0 and < QuantumRange");
}
case 0:
break;
default:
rb_raise(rb_eArgError, "wrong number of arguments (%d for 0 or 1)", argc);
break;
}
new_image = rm_clone_image(image);
#if defined(IMAGEMAGICK_7)
exception = AcquireExceptionInfo();
GVL_STRUCT_TYPE(SolarizeImage) args = { new_image, threshold, exception };
CALL_FUNC_WITHOUT_GVL(GVL_FUNC(SolarizeImage), &args);
rm_check_exception(exception, new_image, DestroyOnError);
DestroyExceptionInfo(exception);
#else
GVL_STRUCT_TYPE(SolarizeImage) args = { new_image, threshold };
CALL_FUNC_WITHOUT_GVL(GVL_FUNC(SolarizeImage), &args);
rm_check_image_exception(new_image, DestroyOnError);
#endif
return rm_image_new(new_image);
}
|