ImageMagick透明PNG背景

时间:2011-10-10 21:59:27

标签: php imagemagick

我正在尝试将此图像enter image description here转换为.png文件,然后删除白色背景以使其透明。

我试过运行以下但没有运气。

    $strInputFile = 'car.png';
    $execScript = '/usr/local/bin/convert '.$strInputFile.' ';
    $execScript .= "-transparent white car-new.png"; 
    $output = shell_exec($execScript);

我做错了吗?新文件已创建,但仍具有白色背景。

6 个答案:

答案 0 :(得分:16)

与php imagick类似的问题:

将SVG转换为透明PNG时,别忘了把它放在$ imagick-> readImageBlob()之前:

$imagick->setBackgroundColor(new ImagickPixel('transparent'));

答案 1 :(得分:2)

请尝试以下代码:

$strInputFile = 'car.png';
$target = 'car_transparent.png';
$im = new Imagick($strInputFile);
$im->paintTransparentImage($im->getImageBackgroundColor(), 0, 10000);
$im->setImageFormat('png');
$im->writeImage($target);
$im->destroy();

答案 2 :(得分:2)

由于图像是JPEG,会受到损失和轻微的颜色不准确,因此图像中的白色实际上不是100%纯白色。 ImageMagick有一种方法可以通过-fuzz设置处理这个问题,在指定颜色时允许一定程度的模糊度或一系列允许误差。

这里的正确咒语是:

convert car.jpg -fuzz 10% -transparent white car.png

答案 3 :(得分:0)

您的意思是使用-transparency而不是-transparent吗?

答案 4 :(得分:0)

图像的背景不是white(我的意思是0xFFFFFF),它是0xFEFEFE。尝试:

$execScript .= "-transparent #FEFEFE car-new.png"; 

答案 5 :(得分:0)

如果您没有制作Shell脚本,请尝试以下操作:

$ convert -transparency white car.png car-new.png

这应该在通用终端中工作。如果它没有,请告诉我。希望能帮助到你!