我希望使用IMagick使图像的一部分(或实际上是几个部分)透明,这样我就可以将它用作不同图像上的遮罩。我无法以简单的方式找出任何方法。
所以说我的起始图像如下所示,其中X是任何颜色:
XXXXXXXXXXXXX
XXXXXXXXXXXXX
XXXXXXXXXXXXX
XXXXXXXXXXXXX
XXXXXXXXXXXXX
然后我希望能够使某些矩形区域透明(所以它最终有点像打卡):
XXXXXXXXXXXXX
X XXXXXXXXXX
X XXXX XXXX
XXXXXXX XXXX
XXXXXXXXXXXXX
有谁知道这样做的好方法?感谢。
答案 0 :(得分:1)
想出来。
//Open your image and get its dimensions
$image = new Imagick('image.png');
$height = $image->getImageHeight();
$width = $image->getImageWidth();
//Create a new transparent image of the same size
$mask = new Imagick();
$mask->newImage($width, $height, new ImagickPixel('none'));
$mask->setImageFormat('png');
//Draw onto the new image the areas you want to be transparent in the original
$draw = new ImagickDraw();
$draw->setFillColor('black');
$draw->rectangle( 10,10,100,100 );
$mask->drawImage( $draw );
//Composite the images using Imagick::COMPOSITE_DSTOUT
$image->compositeImage($mask, Imagick::COMPOSITE_DSTOUT, 0, 0, Imagick::CHANNEL_ALPHA);