Imagick 无法打开 DNG 图片

Imagick is unable to open DNG images

如您所见,图像 _IGP4559.DNG 存在但 Imagick 无法打开它。 JPEG 图片效果很好。
readImage() returns同样的错误。

图片如下:http://files.patrikelfstrom.se/_IGP4559.DNG

我在终端中运行排除所有其他变量。

$ ll /var/www/_IGP4559.DNG
-rw-rw-rw- 1 monsun monsun 11841201 May 17 03:37 /var/www/_IGP4559.DNG
$ php -a
Interactive mode enabled

php > new Imagick('/var/www/_IGP4559.DNG');
PHP Warning:  Uncaught exception 'ImagickException' with message 'unable to open image `/tmp/magick-29917oe6CM9MIkN8A.ppm': No such file or directory @ error/blob.c/OpenBlob/2709' in php shell code:1
Stack trace:
#0 php shell code(1): Imagick->__construct('/var/www/_IGP45...')
#1 {main}
  thrown in php shell code on line 1

ImageMagick 使用其他程序读取某些图像格式,包括 DNG。

可能发生的情况是,ImageMagick 期望能够用来读取 DNG 的程序在您的系统上不存在或无法正常工作。

列出这些其他程序的文件称为 delegates.xml

在我的系统上,DNG 解码的条目是:

<delegate decode="dng:decode" command="&quot;ufraw-batch&quot; --silent --create-id=also --out-type=png --out-depth=16 &quot;--output=%u.png&quot; &quot;%i&quot;"/>

即它正在尝试使用程序 'ufraw-batch' 进行解码,就像您看到的那样,它失败了,因为该程序在我的系统上不可用。

要解决这个问题,您要么需要安装 ufraw,要么安装一个类似的包,可以将文件从 DNG 格式转换为 ImageMagick 可以直接读取的标准格式。