php ImageMagick透明PNG背景

x8diyxa7  于 2023-05-05  发布在  PHP
关注(0)|答案(7)|浏览(224)

我试图采取这一形象,

,我转换为一个.png文件,然后要删除白色背景,使其透明。
我试过运行以下内容,但没有任何运气。

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

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

3df52oht

3df52oht1#

php imagick的问题:
在将SVG转换为透明PNG时,不要忘记在$imagick-〉readImageBlob()之前放置以下内容:

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

x7rlezfr2#

由于图像是JPEG格式,可能会有损失和轻微的颜色不准确,因此图像中的白色实际上不是100%纯白色。ImageMagick通过-fuzz设置来处理这个问题,该设置在指定颜色时允许一定程度的模糊性或允许的误差范围。
正确的咒语是:

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

g9icjywg3#

请尝试以下代码:

$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();
vi4fp9gy

vi4fp9gy4#

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

qrjkbowd

qrjkbowd5#

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

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

okxuctiv6#

如果你不是在编写Shell脚本,那么试试这个:

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

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

4zcjmb1e

4zcjmb1e7#

做事的顺序很重要。先设置背景,再加载数据

$svg = new Imagick();

// Important! First set Background color transparent, then read svg
$svg->setBackgroundColor('transparent');
$svg->readImage($svgPath);

相关问题