2017-10-05 42 views
0

Ubuntu服务器17.04 + ImageMagick的7-0-6 ImageMagick的权委托 - ImageMagic

有很多SONY RAW(* .ARW)的文件

申报的代表在delegates.xml

...代表解码= “ARW” 命令= “”/选择/露天/脚本/ arw2jpg.sh” “%i” 的 “%○” “/

委托解码=” DNG:解码“逗号nd =“”ufraw-batch“--silent --create-id = also --out-type = png --out-depth = 16”--output =%u.png“”%i“”.. 。

coder.xml - 没有改变

arw2jpg.sh - 使用Dcraw执行从ARW提取嵌入JPG自定义脚本(dcraw的-e ...)。脚本本身的权利

问题的工作 - 转换工作ImageMagick的过程中总是选择DNG:解码委托,而不是ARW

有人可以帮助我为ImageMagick定义正确的代表订单吗?

+0

问题可能在[askubuntu](https://askubuntu.com/)stackexchange网站上更好。 –

回答

1

您只需确保在使用过程中指定了自定义委托协议。

例如..

convert arw:input_file.arw output.jpg 

为什么?

ImageMagick通过magick-header/number选择委托,如果它无法找到委托,它将评估匹配的文件扩展名。在你的例子中,你只是有竞争的代表,冲突的解决/优先顺序对你不利。您必须明确要使用哪个代表(即arw:)。

+0

谢谢! Cleare - 但CONVERT是由Alfresco CE生成的,我不能添加ARW:前缀 – RomanZ

0

埃里克(@emcconville)的回答是正确的,理智的方式,但是你似乎被困在一块岩石和一个坚硬的地方,所以这里有一点点疯狂的方式来做到这一点。

如果ImageMagick的总是挑选DNG代表,你有没有办法忽略这一点,你可能会迫使它的手通过改变DNG委托来选择你想要的方式。所以,你会改变现有的DNG线,所以它看起来是这样的:

delegate decode="dng:decode" command=""YourDecider" " "%i" "%o" "%u" 

然后你写在/usr/local/bin一个脚本,查看文件扩展名,要么调用/opt/alfresco/scripts/arw2jpg.sh适当的参数,或以相同的呼吁ufraw-batch最初在delegates.xml中的一组参数,即--silent --create-id=also --out-type=png --out-depth=16...

所以,你的脚本/usr/local/bin/YourDecider会是这个样子 - 没有经过充分测试 - 只是给你一个想法:

#!/bin/bash 
################################################################################ 
# YourDecider 
# Choose between decoding file with arw2jpg or ufraw-batch 
################################################################################ 
in=$1 
out=$2 
unique=$3 
ext=$(tr "[:upper:]" "[:lower:]" <<< "${in##*.}") 
if [ "$ext" = "arw" ]; then 
    exec /opt/alfresco/scripts/arw2jpg.sh "$in" "$out" 
else 
    exec ufraw-batch --silent --create-id=also --out-type=png --out-depth=16 --output="${unique}.png" "$in" ... 
fi 

你将不得不使其可执行文件:

chmod +x /usr/local/bin/YourDecider