我正在努力让它发挥作用 $ text_layer-> setImageClipMask($ mask_layer); 我期待$ mask_layer的所有黑色区域擦除$ text_layer的匹配区域。 它没有任何效果。
答案 0 :(得分:1)
compositeImage
方法可以达到您所寻求的效果。在PHP中,你可以这样做:
<?php
// Open image
$image = new \Imagick('image.png');
// Create, draw mask
$mask = new \Imagick();
$mask->newImage($image->getImageWidth(), $image->getImageHeight(), 'transparent', 'png');
$mask_shape = new \ImagickDraw();
$mask_shape->setStrokeAntialias(true);
$mask_shape->setFillColor('white');
$mask_shape->setStrokeColor('white');
$mask_shape->circle($image_width/2, $image_height/2, 0, $image_height/2);
$mask->drawImage($mask_shape);
// Apply mask to image
$image->compositeImage($mask, \Imagick::COMPOSITE_COPYOPACITY, 0, 0, \Imagick::CHANNEL_ALL);
// Save newly-"masked" image
$image->writeImage('image.png');
A之前和之后:
最好在Photoshop中创建一个遮罩并将其与项目一起存储。您可以像$mask = new \Imagick('mask.png');
那样打开面具并直接应用它,而不像我上面那样动态生成蒙版。