Imagick - 将PNG转换为JPG时,透明背景变成黑色

3

我希望我的背景最终是白色的。我已经看了其他问题,但似乎没有答案真正解决了这个问题。

我正在使用Imagick版本2.3,下面就是我的代码:

$this->_object = new Imagick();
$this->_object->setResolution(300, 300);
$this->_object->readImage($fileRead);
$this->_object->setImageMatte(true);
$this->_object->setImageMatteColor("white");
$this->_object->setImageAlphaChannel(Imagick::ALPHACHANNEL_OPAQUE);

我已经尝试过

setBackgroundColor, setImageBackgroundColor, composite over a white image

没有一个方法可行,有什么建议吗?

这个 https://dev59.com/XGw15IYBdhLWcg3wcbWy 没有帮到你吗? - entropid
JPG格式不支持透明度,如果这正是您所寻找的。 - Explosion Pills
糟糕,我想澄清一下,我需要一个白色的背景。 - chrisjbaik
1个回答

0

Jpg扩展名不支持背景透明度,您需要使用png格式。对于其他网站,如果您有一个带有白色背景的图像,则可以使用以下代码将该颜色设置为透明:

    $route  = "MiOldJpgWriteBackground.jpg";
    $salida = 'MiNewTransparentFile.png';
    exec("convert $route $salida");
    exec("convert $salida -bordercolor white -border 1x1 \
         -alpha set -channel RGBA -fuzz 10% \
         -fill none -floodfill +0+0 white \
         -shave 1x1 $salida");
    exec("rm $route");

抱歉 - 我不想要透明背景,我想要在JPG上使用白色背景(只是为了澄清)。 - chrisjbaik
有了透明度,您可以将所有颜色放在背景中。在我的示例中,代码尝试将白色更改为其他颜色(仅在此情况下使用透明度),您的背景颜色是什么?所有图像都相同还是不同? - Rubén Fanjul Estrada

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接