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


change opacity of image using 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;  

使用getImageAlphaChannel()函数使用if条件

检测图像是否有透明

说明:

这个方法是可用的,如果Imagick已经编译ImageMagick版本6.4.0或更新。