Method: Magick::Image#transparent
- Defined in:
- ext/RMagick/rmimage.cpp
#transparent(color, alpha: Magick::TransparentAlpha) ⇒ Magick::Image
Changes the opacity value of all the pixels that match color to the value specified by opacity. By default the pixel must match exactly, but you can specify a tolerance level by setting the fuzz attribute on the image.
-
Default alpha is Magick::TransparentAlpha.
-
Can use Magick::OpaqueAlpha or Magick::TransparentAlpha, or any value >= 0 && <= QuantumRange.
-
Use Image#fuzz= to define the tolerance level.
14692 14693 14694 14695 14696 14697 14698 14699 14700 14701 14702 14703 14704 14705 14706 14707 14708 14709 14710 14711 14712 14713 14714 14715 14716 14717 14718 14719 14720 14721 14722 14723 14724 14725 14726 14727 14728 14729 14730 14731 14732 14733 14734 14735 14736 14737 14738 14739 14740 14741 |
# File 'ext/RMagick/rmimage.cpp', line 14692
VALUE
Image_transparent(int argc, VALUE *argv, VALUE self)
{
Image *image, *new_image;
MagickPixel color;
Quantum alpha = TransparentAlpha;
MagickBooleanType okay;
#if defined(IMAGEMAGICK_7)
ExceptionInfo *exception;
#endif
image = rm_check_destroyed(self);
switch (argc)
{
case 2:
alpha = get_named_alpha_value(argv[1]);
case 1:
Color_to_MagickPixel(image, &color, argv[0]);
break;
default:
rb_raise(rb_eArgError, "wrong number of arguments (%d for 1 or 2)", argc);
break;
}
new_image = rm_clone_image(image);
#if defined(IMAGEMAGICK_7)
exception = AcquireExceptionInfo();
GVL_STRUCT_TYPE(TransparentPaintImage) args = { new_image, &color, alpha, MagickFalse, exception };
void *ret = CALL_FUNC_WITHOUT_GVL(GVL_FUNC(TransparentPaintImage), &args);
okay = static_cast<MagickBooleanType>(reinterpret_cast<intptr_t &>(ret));
rm_check_exception(exception, new_image, DestroyOnError);
DestroyExceptionInfo(exception);
#else
GVL_STRUCT_TYPE(TransparentPaintImage) args = { new_image, &color, (Quantum)(QuantumRange - alpha), MagickFalse };
void *ret = CALL_FUNC_WITHOUT_GVL(GVL_FUNC(TransparentPaintImage), &args);
okay = static_cast<MagickBooleanType>(reinterpret_cast<intptr_t &>(ret));
rm_check_image_exception(new_image, DestroyOnError);
#endif
if (!okay)
{
// Force exception
DestroyImage(new_image);
rm_magick_error("TransparentPaintImage failed with no explanation");
}
return rm_image_new(new_image);
}
|