我正在尝试将此图像转换为.png文件,然后删除白色背景以使其透明。
我试过运行以下但没有运气。
$strInputFile = 'car.png';
$execScript = '/usr/local/bin/convert '.$strInputFile.' ';
$execScript .= "-transparent white car-new.png";
$output = shell_exec($execScript);
我做错了吗?新文件已创建,但仍具有白色背景。
答案 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
这应该在通用终端中工作。如果它没有,请告诉我。希望能帮助到你!