【问题标题】:Create transparent image after using clipPath on ImageMagick v7在 ImageMagick v7 上使用 clipPath 后创建透明图像
【发布时间】:2021-06-15 13:58:24
【问题描述】:

在 ImageMagick v6 上,我使用以下代码创建带有剪贴路径的透明图像:

try {
    $im = new Imagick($image);
    $tmpOut = $im->identifyImage(TRUE);
    
    if(isset($tmpOut["rawOutput"]) AND strpos($tmpOut["rawOutput"], "Clipping path:") !== FALSE) {
        $im->setImageAlphaChannel(Imagick::ALPHACHANNEL_TRANSPARENT);
        $im->clipImage();
        $im->setImageAlphaChannel(Imagick::ALPHACHANNEL_OPAQUE);
    }
    $im->writeImage($pathSave . $filename);
    $im->destroy();
} catch (ImagickException $e) {
    var_dump($e);
}

从版本 7 开始出现以下错误:

Undefined class constant 'ALPHACHANNEL_OPAQUE'

我已经搜索过了,等价的应该是:

Imagick::ALPHACHANNEL_OFF

但是当我使用它时,背景是白色的,不像以前的 ImageMagick 6 版那样透明。

也许你们中的一些人遇到了这种情况并且知道解决这个问题的方法。

【问题讨论】:

    标签: php imagemagick


    【解决方案1】:

    我用shell_exec 修复了它,并添加了一个检查变量是否存在于我的 linux 系统中,其中 imagemagick 版本 6 处于活动状态。并将$im->destroy() 更改为$im->clear(),因为不推荐使用destroy

    我的新代码如下所示:

    try {
        $im = new Imagick($image);
        $tmpOut = $im->identifyImage(TRUE);
    
        if(isset($tmpOut["rawOutput"]) AND strpos($tmpOut["rawOutput"], "Clipping path:") !== FALSE) {
            if(defined('Imagick::ALPHACHANNEL_OPAQUE')) {
                $im->setImageAlphaChannel(Imagick::ALPHACHANNEL_TRANSPARENT);
                $im->clipImage();
                $im->setImageAlphaChannel(Imagick::ALPHACHANNEL_OPAQUE);
            } else {
                $im->clear();
                $im = null;
                shell_exec("magick {$image} -alpha opaque -clip -alpha transparent +clip {$pathSave}{$filename}");
            }
        }
        
        if($im !== null) {
            $im->writeImage($pathSave . $filename);
            $im->clear();
            $im = null;
        }
    } catch (ImagickException $e) {
        var_dump($e);
    }
    

    【讨论】:

      猜你喜欢
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 1970-01-01
      • 2013-05-19
      • 2015-03-18
      • 2014-01-25
      相关资源
      最近更新 更多