使用imagick改变图像的不透明度

时间:2014-06-22 09:46:52

标签: php image-processing imagick

当我使用setImageOpacity时,我希望更改多个图像的不透明度它适用于所有图像,但不适用于png图像,当我使用evaluateImage时,它对于透明图像工作正常,但对其他图像则无效图片。如果图像是透明的,那么我如何对所有类型的图像使用相同的方法?这是代码

<?php
// Open the original image
$image = new Imagick();
$image->readImage(3.jpg);

// Open the watermark
$watermark = new Imagick();
$watermark->readImage(2.png);

    $watermark->setImageOpacity(0.444);
    //$watermark->evaluateImage(Imagick::EVALUATE_MULTIPLY, 0.0, Imagick::CHANNEL_ALPHA);


$watermark->rotateImage(new ImagickPixel('transparent'), 90); 
// Overlay the watermark on the original image
$image->compositeImage($watermark, imagick::COMPOSITE_OVER, 20, 20);

// send the result to the browser
header("Content-Type: image/" . $image->getImageFormat());
echo $image;  

1 个答案:

答案 0 :(得分:2)

使用getImageAlphaChannel()函数

时使用if条件

检测图像是否有透明

注意:

  

如果编译了Imagick,则此方法可用   ImageMagick版本6.4.0或更新。