2014-09-11 267 views
-1

我无法使imagick与本地xampp一起工作。致命错误:未捕获异常'ImagickException'带消息'NoDecodeDelegateForThisImageFormat

错误

Fatal error: Uncaught exception 'ImagickException' with message 'NoDecodeDelegateForThisImageFormat

代码

$im = new imagick(); 
$im->setResolution(300, 300); 
$im->readimage($base_dir . 'files/PDF/test.pdf'); 
$im->setIteratorIndex($i); 
$im->setImageFormat('jpeg'); 
$newimgname = time(); 
$im->resizeImage(500, 500, Imagick::FILTER_LANCZOS, 1); 
$im->cropImage(100, 100, 0, 0); 
$thumbnail = $im->getImageBlob(); 
+0

POSS复制[此篇](http://stackoverflow.com/questions/22547819/imagick-not-loading-images-with-nodecodedelegateforthisimageformat-error-mess) – 2014-09-11 06:46:53

+0

欢迎的StackOverflow的。请简要说明您正在尝试做什么,您尝试解决此问题的方法以及您希望输出的内容。 – JamesENL 2014-09-11 06:47:04

+0

哇,今天的艰难人群。 @JeremyMiller这不是重复的,这是关于PDF的。 @ James Massey问题很简单,但实际上已经完成。 – Danack 2014-09-11 15:04:18

回答

1

Imagick调用ImageMagick库来完成所有它的图像处理。 Image Magick库本身并不实际处理PDF,它调用GhostScript来处理它们并生成Image Magick随后读取的PNG或Jpeg。

NoDecodeDelegateForThisImageFormat表示Image Magick无法调用它认为它应该将解码委托给GhostScript的委托程序。

解决方法是通过yum或apt安装GhostScript,它应该可以工作。

如果它仍然不起作用,您应该检查Image Magick的代表文件(http://www.imagemagick.org/source/delegates.xml)中的PDF条目,并确保它可以从命令提示符调用 - 即检查Image Magick是否也会能够找到它。

+0

我已经在我的windows(8.1)机器上安装了GhostScript最新版本。还没有运气! – 2014-09-12 09:42:23

+0

如何对Image Magick说,在哪里可以找到GhostScript,如果GS安装在C:\ ghostscript上的Windows上? – user3383675 2016-09-22 06:34:33

0

即使在安装GhostScript之后,我们也无法从AWS切换到Azure后得到代表错误的imagick代码。我们结束了使用功能execInBackground运行命令(PHP.net Exec() Page

注意的PHP代码转换为难懂的命令行,:在命令行没有单独使用EXEC工作。 php脚本不会正常终止。

//from PHP.net 
function execInBackground($cmd) { 
    if (substr(php_uname(), 0, 7) == "Windows"){ 
     pclose(popen("start /B ". $cmd, "r")); 
    } 
    else { 
     exec($cmd . " > /dev/null &"); 
    } 
} 

//create a thumbnail from the first page of PDF 
//old php code 
/* 
$image_magick = new imagick(); 
$image_magick->setbackgroundcolor('white'); 
$image_magick->readImage($file_path . "[0]"); 
$image_magick = $image_magick->flattenImages(); 
$image_magick->setResolution(300,300); 
$image_magick->thumbnailImage(102, 102, true); 
$image_magick->setImageFormat('jpg'); 
$image_magick->writeImage($thumbnail_path); 
*/ 

//command line syntax 
$cmd = "magick convert " . chr(34) . $file_path . "[0]" . chr(34) . " -background white -flatten -resample " . chr(34) . "300x300" . chr(34) . " -thumbnail " . chr(34) . "102x102" . chr(34) . " -format jpg -write " . chr(34) . $thumbnail_path . chr(34); 
execInBackground($cmd); 
相关问题