15 $mask_source = $this->
argument(0)->value();
16 $mask_w_alpha = $this->
argument(1)->type(
'bool')->value(
false);
19 $imagick = $image->getCore();
22 $mask = $image->getDriver()->init($mask_source);
25 $image_size = $image->getSize();
26 if ($mask->getSize() != $image_size) {
27 $mask->resize($image_size->width, $image_size->height);
30 $imagick->setImageMatte(
true);
35 $imagick->compositeImage($mask->getCore(), \Imagick::COMPOSITE_DSTIN, 0, 0);
40 $original_alpha = clone $imagick;
41 $original_alpha->separateImageChannel(\Imagick::CHANNEL_ALPHA);
44 $mask_alpha = clone $mask->getCore();
45 $mask_alpha->compositeImage($mask->getCore(), \Imagick::COMPOSITE_DEFAULT, 0, 0);
47 $mask_alpha->separateImageChannel(\Imagick::CHANNEL_ALL);
50 $original_alpha->compositeImage($mask_alpha, \Imagick::COMPOSITE_COPYOPACITY, 0, 0);
53 $imagick->compositeImage($original_alpha, \Imagick::COMPOSITE_DSTIN, 0, 0);