PHP Imagick无法设置图像背景颜色。

3

我加载了一张透明的PNG图片,每次尝试使用 setimagebackgroundcolor() 设置背景颜色时,它仍然是透明的。

    $input_img = new Imagick();

    $input_img->setBackgroundColor("#ff0000");

    $input_img->readImage("transparent.png");

    $input_img->setimagebackgroundcolor("#00ff00");

    $input_img->setImageFormat("png");

    $input_img->setimagebackgroundcolor("#ff00ff");

    $input_img->writeimage("image.png");

我也看到了这个问题。看起来像是一个bug。 - F21
你混淆了颜色和透明度。如果一个像素是透明的,它可以有任何颜色并且仍然是透明的。你必须先改变透明度。或者用透明度设置颜色。 - Lorenz Meyer
3个回答

2
译文:使用技巧是:$im = $im->flattenImages();。保留HTML,不进行解释。
<?php
$im = new Imagick($filename);

$im->setImageBackgroundColor('#ffffff');
$im = $im->flattenImages();

$im->setImageFormat("jpeg");
$im->setImageCompressionQuality(95);
$im->writeImage($filename);

0
第一行代码创建一个新的Imagickpixel对象表示颜色;第二行使用该颜色创建一个1920x1200的图像。
$color = new ImagickPixel("white");
$input_img->newImage(1920,1200, $color);

-1

试试这个!

$imput_img->setBackgroundColor(new ImagickPixel('blue'));

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