我正在使用ImageMagick将RAW文件(* .nef扩展名)转换为JPEG图像。我实际上是在PHP中做这个,但是没有使用IMagick扩展(我花了太多时间撞墙,试图让那个工作最终我放弃了)。相反,我正在使用PHP的exec()
函数从命令行调用ImageMagick,并在那里进行操作。
无论如何,我写了一个简单的PHP脚本来做到这一点 - 将NEF图像转换为JPEG图像 - 它有效!我经历了一些测试。当JPEG不存在时,它就创建了它。当JPEG已经存在时,它会覆盖它。完美!
直到今天。我上星期五制作了这个剧本。今天(星期一),当它试图使用它时,它停止了工作。我确实改变了没有什么,但是几天之后,它在周五运行的所有测试都失败了。我可以从命令行检索输出,这些是这次遇到的错误:Magick: `%s' (%d) dcraw.exe -4 -w -O "C:/Windows/TEMP/magick-iDvVnHw-.ppm" "C:/Windows/TEMP/magick-hYeYwWRd" @ error/utility.c/SystemCommand/2094.
Magick: delegate failed `dcraw.exe -4 -w -O "%u.ppm" "%i"' @ error/delegate.c/InvokeDelegate/1058.
Magick: unable to open image `C:/Windows/TEMP/magick-iDvVnHw-.ppm': No such file or directory @ error/blob.c/OpenBlob/2588.
Magick: missing an image filename `E:\test.jpg' @ error/convert.c/ConvertImageCommand/3015.
周五没有出现这些错误。他们为什么现在出现?他们的意思是什么?我能对他们做些什么?提前谢谢。
答案 0 :(得分:2)
我在linux上遇到了类似的错误:
No such file or directory @ error/blob.c/OpenBlob/2709. convert: no images defined `/tmp/transform_5c88983-1.jpg' @ error/convert.c/ConvertImageComman
这个问题在我的德国名字中是一个特殊字符:
images/1/14/Ministerium-für-Bildung.jpg
我进入了该文件夹并创建了一个没有字符的符号链接:
ln -s Ministerium-für-Bildung.jpg Ministerium-fr-Bildung.jpg
答案 1 :(得分:0)
好吧,我能够解决它。我做了两件事,我并不完全确定第一件事是否有任何影响,但我会提到其他任何人都在苦苦挣扎。首先,由于它似乎遇到了临时文件问题,我更改了C:\Windows\TEMP
文件夹上的Windows安全/权限,以明确允许IIS_USER
完全控制,以及Everyone
。< / p>
但其次,更重要的是,我改变了传递给exec()
的命令。以前我的命令看起来像这样:
$cmd = 'C: & "C:\\Program Files (x86)\\ImageMagick\\convert.exe" ';
$cmd .= '"E:\\test.nef" "E:\\test.jpg" 2>&1';
exec($cmd, $output, $return);
所以我指定了一个新的“temp”目录,并设置当前路径,如下所示:
$cmd = 'SET MAGICK_TMPDIR=E:\\Temp&SET path=C:\\Program Files (x86)\\;%path%& ';
$cmd .= '"C:\\Program Files (x86)\\ImageMagick\\convert.exe" ';
$cmd .= '"E:\\test.nef" "E:\\test.jpg" 2>&1';
exec($cmd, $output, $return);
这就是诀窍!该脚本再次运行。