php - 转换 CR2 或 NEF 时出现 Imagick 异常 "unable to open image"

标签 php imagemagick imagick

我尝试使用 imagik 将 .CR2 或 .NEF 文件转换为 jpg。

ImageMagik 已安装在服务器上。 我的代码:

$im = new Imagick( 'canonRaw_test.CR2' );
$im->setImageFormat( 'jpg' );
$im->writeImage( 'canonRaw_test.jpg' );
$im->clear();
$im->destroy();

它返回: fatal error :未捕获异常“ImagickException”,消息“无法打开图像`/var/tmp/magick-80620Kc-ZP09ux4Rc.ppm”:没有这样的文件或目录@ error/blob.c/OpenBlob/2658'

相同的代码可以完美地处理 jpg 甚至 .HDR 文件。

注意:图像文件似乎不错。我用其他 .cr2 进行了测试,以确保这不是文件本身造成的问题。

有什么想法吗? 谢谢。

最佳答案

好吧,我解决了。

我必须安装ufraw。 在 CentOS 上:

rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm
yum install libjpeg-turbo dcraw perl-Image-ExifTool
yum install ufraw

然后更新 imageMagick 的 delegates.xml :

<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的绝对路径:

command="&quot;ufraw-batch&quot;

替换为:

command="&quot;/usr/bin/ufraw-batch&quot;

为了找到我使用的绝对路径

locate ufraw-batch

如果它没有显示位置,请使用:

echo $PATH

这将为您提供程序所在的文件夹,并在每个文件夹上尝试使用“ls”。您将找到 ufraw-batch 及其绝对路径。

我花了 2 天的时间来实现这一点,因为我不习惯使用命令行。希望它可以帮助将来的人。

关于php - 转换 CR2 或 NEF 时出现 Imagick 异常 "unable to open image",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45958767/

相关文章:

PHP:提取字符串的版本号

svg - 使用 ImageMagick 将带有自定义字体的 SVG 转换为 PNG

linux - ImageMagick - 使用转换命令将半页上的 GIF 转换为 PDF 肖像(字母)

ios - ImageMagick 如何编写代码以在图像上应用 ShepardsDistortion

php - 有没有办法判断字体是否支持 Imagick 中的给定字符?

php - Javascript 特定属性更改

php - 刷新 token AWS Cognito 用户池

PHP-如何获取旋转后点的坐标?

php - 哪些网络视频格式可以做到这一点?

php - 如何使用 PHP + shell 命令优化视频到动画 GIF 的转换