首页 > 解决方案 > 致命错误:未捕获的错误:调用未定义的方法 Imagick::flattenImages()

问题描述

我一直在我的一个图像处理脚本中使用 Imagick 和 ImageMagick。它在我的开发服务器上运行良好,具有以下配置。

PHP 版本 7.0.33 Imagick 3.4.3 ImageMagick 6.7.9-10 2016-05-05 Q16 http://www.imagemagick.org

但是在我客户的服务器上,我收到以下错误。

致命错误:未捕获的错误:调用未定义的方法 Imagick::flattenImages()

我的客户有以下配置

PHP 版本 7.2.15 Imagick 3.4.3 ImageMagick 7.0.7-11 Q16 x86_64 2017-11-20 http://www.imagemagick.org

我只是想知道 Imagick::flattenImages() 是如何从我的客户端服务器中丢失的,因为我的服务器和客户端的服务器都具有相同的 Imagick 版本

标签: imagemagickimagickimagemagick-convert

解决方案


尝试这个:

$image = new Imagick();
$image->readImage( $path_to_file );
$flattenedImage = $img->mergeImageLayers( imagick::LAYERMETHOD_FLATTEN );

Imagick::mergeImageLayers()方法的 PHP 文档

您还可以将这些常量之一作为层方法传递:

  • imagick::LAYERMETHOD_UNDEFINED(ImageMagick 6.2.9+)
  • imagick::LAYERMETHOD_COALESCE(ImageMagick 6.2.9+)
  • imagick::LAYERMETHOD_COMPAREANY(ImageMagick 6.2.9+)
  • imagick::LAYERMETHOD_COMPARECLEAR(ImageMagick 6.2.9+)
  • imagick::LAYERMETHOD_COMPAREOVERLAY(ImageMagick 6.2.9+)
  • imagick::LAYERMETHOD_DISPOSE(ImageMagick 6.2.9+)
  • imagick::LAYERMETHOD_OPTIMIZE(ImageMagick 6.2.9+)
  • imagick::LAYERMETHOD_OPTIMIZEPLUS(ImageMagick 6.2.9+)
  • imagick::LAYERMETHOD_OPTIMIZEIMAGE(ImageMagick 6.3.0+)
  • imagick::LAYERMETHOD_OPTIMIZETRANS(ImageMagick 6.3.0+)
  • imagick::LAYERMETHOD_REMOVEDUPS(ImageMagick 6.3.0+)
  • imagick::LAYERMETHOD_REMOVEZERO(ImageMagick 6.3.0+)
  • imagick::LAYERMETHOD_COMPOSITE(ImageMagick 6.3.0+)
  • imagick::LAYERMETHOD_MERGE(ImageMagick 6.3.7+)
  • imagick::LAYERMETHOD_FLATTEN(ImageMagick 6.3.7+)
  • imagick::LAYERMETHOD_MOSAIC(ImageMagick 6.3.7+)

推荐阅读