我正尝试在ubuntu上使用imagemagick-7 (CLI)来识别原始图像并将其转换为PNG格式。我使用dcraw二进制文件作为识别和转换原始图像的委托。
我在delegates.xml中更新了dng:decode委托,如下所示:
<delegate decode="dng:decode" command=""dcraw" "%i"" />
当我运行这个命令:magick identify test.dng时,我得到以下错误:
identify: unable to open image '/tmp/magick-24332a6nW8lcwejNJ.ppm': No such file or directory @ error/blob.c/OpenBlob/3489.
对于magick convert,也会出现同样的错误。我注意到imagemagick在我的/tmp目录中生成了一个临时中间文件,它的名称与它期望在那里找到的名称不同。例如,它生成了这个文件- magick-24332P6aVDePOFeCn.ppm -但是期望它生成的文件具有这个名称- magick-24332a6nW8lcwejNJ.ppm -这就是为什么它找不到它的原因。
注意:我在OS上测试了同样的东西,它工作得很好(使用相同的delegates.xml配置)。
这是imagemagick在unix系统上的实现中的一个bug,还是我做错了什么?如果您有任何想法,我们将不胜感激!
发布于 2018-09-14 09:27:52
差不多了!您需要使用%o占位符来告诉委托管理器输出文件将被写入的位置。但是,dcraw实用程序没有输出目的地选项--至少从手册页可以看出是这样。它确实有一个stdout选项(-c),因此您应该能够通过管道/将流重定向到输出位置。
dcraw -c %i > %o或在委托XML中。
<delegate decode="dng:decode" command=""dcraw" -c "%i" > "%o"" />更新
我在自定义委派中观察到的一些技巧。
/usr/local/bin或/opt目录。command="/usr/local/bin/dcraw ...
mv。如果你不习惯调试unix streams之类的东西。只需执行一些基本的复制/移动命令。我们可以用以下命令重写上面的命令:DCraw%i;mv %i.ppm %o
\"%i和"%i很难读懂。..。验证调用是否正确...那很可能是逃逸路径。
identify -list Delegate验证命令是否正确加载,使用-verbose验证运行时是否正确调用该命令。发布于 2018-10-01 16:35:07
您关闭了在委托中使用的正确命令是
<delegate decode="dng:decode" command=""dcraw" -c "%i" > "%u.ppm"" />发布于 2018-09-17 03:07:00
对于遇到这个问题的其他人,我的解决方案最终是从imagemagick切换到graphicsmagick,后者默认配置为使用dcraw (当然,您需要在PATH上安装dcraw )。
http://www.graphicsmagick.org/
https://stackoverflow.com/questions/52322701
复制相似问题