Ubuntu Server 17.04 + ImageMagick 7-0-6 ImageMagick
delegates.xml
中声明的委托中有很多SONY RAW(* .ARW)文件...委托解码=" arw"命令="" /opt/alfresco/scripts/arw2jpg.sh" "%I" "%O"" /
委托解码=" dng:解码"命令="" ufraw分批" - 无声 --create-id = also --out-type = png --out-depth = 16" - output =%u.png" "%I"" ...
coder.xml - 无变化
arw2jpg.sh - 使用DCRAW从ARW中提取嵌入式JPG的自定义脚本(dcraw -e ...)。脚本本身工作正常。
问题 - 在CONVERT工作期间,ImageMagick总是选择 dng:decode 委托而不是 arw ?
有人可以帮我定义ImageMagick的正确代理订单吗?
答案 0 :(得分:1)
您只需确保在使用期间指定自定义委托协议。
例如......
convert arw:input_file.arw output.jpg
为什么?
ImageMagick通过magick-header / number选择委托,如果它无法找到委托,它将评估匹配的文件扩展名。在您的示例中,您只是拥有竞争代表,冲突解决/优先级对您不利。您必须明确指出要使用哪个代理(即arw:
)。
答案 1 :(得分:0)
如果 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