我正在使用以下代码将一个图像遮盖到另一图像上。在输出时,它给我一个黑色背景的图像。
但我需要白色背景或透明背景。
以下是我用来将一张图像遮盖在另一张图像上的代码。
<?PHP
$destination_path = getcwd().DIRECTORY_SEPARATOR;
$im1="image1.png";
$im2="image2.png";
$i1="$destination_path$im1";
$i2="$destination_path$im2";
$base = new Imagick($i1);
$mask = new Imagick($i2);
// Setting same size for all images
$base->resizeImage(274, 275, Imagick::FILTER_LANCZOS, 1);
// Copy opacity mask
$base->compositeImage($mask, Imagick::COMPOSITE_DSTIN, 0, 0, Imagick::CHANNEL_ALPHA);
$base->writeImage('output.png');
header("Content-Type: image/png");
echo $base;
?>
新方法:
flattenImages() 现在似乎已被弃用。
如果你的PHP imagick模块是3.2.0b2或更高版本,那么当前的解决方案如下:
$im->setImageBackgroundColor('#ffffff');
$im->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE);
$im = $im->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);
如果你的 PHP imagick 模块小于这个,那么ALPHACHANNEL_REMOVE
常量无法识别,您可以使用以下代码代替:
$im->setImageBackgroundColor('#ffffff');
$im->setImageAlphaChannel(11);
$im = $im->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);
检查您的 imagick 版本
要检查 imagick 模块版本,请运行以下命令:
php --ri imagick
注意:上面的命令将同时给出 imagick 版本和 ImageMagick 版本。您正在寻找 imagick 版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)