Php Imagick-使黑色背景为白色

Php Imagick-使黑色背景为白色,php,transparent,imagick,Php,Transparent,Imagick,我使用以下代码在另一个图像上屏蔽一个图像。在输出时,它给我一个黑色背景的图像 但我需要一个白色背景或透明背景 下面是我用来屏蔽一个图像的代码 <?PHP $destination_path = getcwd().DIRECTORY_SEPARATOR; $im1="image1.png"; $im2="image2.png"; $i1="$destination_path$im1"; $i2="$destination_path$im2"; $base = new Imagick($i

我使用以下代码在另一个图像上屏蔽一个图像。在输出时,它给我一个黑色背景的图像

但我需要一个白色背景或透明背景

下面是我用来屏蔽一个图像的代码

<?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;
?>

试试这个: 白色:


透明背景:

<?php 
$im = new Imagick(); 
$im->setBackgroundColor(new ImagickPixel('transparent')); 

$im->readImage('carte_Alain2.svg'); 

$im->setImageFormat("png32"); 

header('Content-type: image/png'); 
echo $im; 
?>

请同时查看以下链接:


技巧是使用:
$im=$im->flattimages()


新方法:

FlattImages()现在似乎已被弃用

如果您的PHP imagick模块为3.2.0b2或更高版本,则当前解决方案如下:

$im->setImageBackgroundColor('#ffffff');
$im->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE);
$im = $im->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);
如果您的PHP imagick模块小于该值,则无法识别
ALPHACHANNEL\u REMOVE
常量,您可以使用以下代码:

$im->setImageBackgroundColor('#ffffff');
$im->setImageAlphaChannel(11);
$im = $im->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);
检查您的imagick版本

要检查imagick模块版本,请运行以下命令:

php --ri imagick

注意:上面的命令将给出imagick版本和ImageMagick版本。您正在寻找imagick版本。

他们没有给我白色背景,也没有创建具有透明背景的图像,但对我来说效果很好。。如果我在系统中运行上述代码!:(检查此解决方案。!carte_Alain2.svg它是什么类型的图像?这是一个示例,如果您愿意,您可以将其更改为PNG。它不适用于pdf文件。如果您使用pdf,它会将所有页面合并为一个。这对我来说非常有用。但我会逐个打开页面:$im->readImage($file.[$page]”;
php --ri imagick