【问题标题】:PHP Imagick cannot set image background colorPHP Imagick 无法设置图像背景颜色
【发布时间】:2012-10-20 10:20:49
【问题描述】:

我加载透明的 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");

【问题讨论】:

  • 也看到了这个问题。对我来说似乎是一个错误。
  • 你混淆了颜色和不透明度。如果一个像素是透明的,它可以有任何颜色并且仍然是透明的。您必须先更改透明度。或者用透明度设置颜色。

标签: php background-color imagick


【解决方案1】:

代码的第一行为颜色设置了一个新的 Imagickpixel 对象。第二行创建一个新框架,1920 和 1200 是当然的尺寸。

$color = new ImagickPixel("white");

$input_img->newImage(1920,1200, $color)

【讨论】:

    【解决方案2】:

    诀窍是使用:$im = $im->flattenImages();:

    <?php
    $im = new Imagick($filename);
    
    $im->setImageBackgroundColor('#ffffff');
    $im = $im->flattenImages();
    
    $im->setImageFormat("jpeg");
    $im->setImageCompressionQuality(95);
    $im->writeImage($filename);
    

    【讨论】:

      【解决方案3】:

      试试这个!

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

      【讨论】:

        猜你喜欢
        • 2017-09-11
        • 2014-05-11
        • 1970-01-01
        • 1970-01-01
        • 2012-06-04
        • 2014-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多