不幸的是,imagemagick的policy documentation并不是很广泛,所以我想知道是否可以禁用除一个以外的所有编解码器。这可能吗?也许通过规则解释顺序,第二个政策否决了第一个政策:
<policy domain="coder" rights="none" pattern="*" />
<policy domain="coder" rights="read | write" pattern="jpeg" />
我可以想到几种可能性:
似乎模式中只有星号表示可用,而不是其他正则表达式匹配或否定(pattern="not jpeg"
或其他)。
答案 0 :(得分:0)
您不应该尝试使用通配符模式匹配,而应该对所有编码器进行说明。幸运的是,ImageMagick的identify
实用程序,它可以告诉你系统库中所有可用的编码器。
identify -list Coder
您可以通过awk / sed以及其他单行实用程序来生成策略映射。
<policymap>
<policy domain="coder" rights="none" pattern="BGR" />
<policy domain="coder" rights="none" pattern="BMP" />
<policy domain="coder" rights="none" pattern="BRAILLE" />
<policy domain="coder" rights="none" pattern="CALS" />
<policy domain="coder" rights="none" pattern="CMYK" />
<policy domain="coder" rights="none" pattern="DDS" />
<policy domain="coder" rights="none" pattern="DNG" />
<policy domain="coder" rights="none" pattern="DOT" />
<policy domain="coder" rights="none" pattern="EPT" />
<policy domain="coder" rights="none" pattern="FAX" />
<policy domain="coder" rights="none" pattern="FITS" />
<policy domain="coder" rights="none" pattern="GIF" />
<policy domain="coder" rights="none" pattern="GRADIENT" />
<policy domain="coder" rights="none" pattern="HTML" />
<policy domain="coder" rights="none" pattern="ICON" />
<policy domain="coder" rights="none" pattern="INLINE" />
<policy domain="coder" rights="none" pattern="JBIG" />
<policy domain="coder" rights="none" pattern="JP2" />
<policy domain="coder" rights="read | write" pattern="JPEG" />
<!-- ... -->
<!--
Other coders omitted so folks don't copy-n-past, and assume "job-done"
-->
</policymap>
当然,请重复identify -list Format
和identify -list Delegate
。
但为什么不是模式?
我的论点是这样的。如果您今天创作一个聪明的模式,明天业务需求会发生变化时会发生什么?我认为政策图的复杂性会增加。
如果两年内有修改会怎样?试图阅读&amp;记住模式正在做的事情会比vim中的三个关键时刻花费更多的时间。