<p>目前,<a href="/questions/tagged/wand" class="post-tag" title="show questions tagged 'wand'" rel="tag">wand</a>不支持ImageMagick的C-API中的任何统计方法(在<a href="http://docs.wand-py.org/en/0.3.8/whatsnew/0.3.html#histogram" rel="nofollow">histogram</a>和{a3}之外)。幸运的是,<a href="http://docs.wand-py.org/en/0.3.8/wand/api.html" rel="nofollow">wand.api</a>是用来扩展功能的。在</p>
<ol>
<li>在MagickWand的文档中找到<a href="http://www.imagemagick.org/api/magick-image.php#MagickGetImageChannelStatistics" rel="nofollow">method you need</a>。在</li>
<li>使用<a href="https://docs.python.org/3/library/ctypes.html" rel="nofollow">ctypes</a>实现数据类型/结构(<a href="https://subversion.imagemagick.org/subversion/ImageMagick/branches/ImageMagick-6.8.9/magick/statistic.h" rel="nofollow">reference header ^{<cd1>} files</a>)</li>
</ol>
<pre class="lang-py prettyprint-override"><code>from wand.api import library
import ctypes
class ChannelStatistics(ctypes.Structure):
_fields_ = [('depth', ctypes.c_size_t),
('minima', ctypes.c_double),
('maxima', ctypes.c_double),
('sum', ctypes.c_double),
('sum_squared', ctypes.c_double),
('sum_cubed', ctypes.c_double),
('sum_fourth_power', ctypes.c_double),
('mean', ctypes.c_double),
('variance', ctypes.c_double),
('standard_deviation', ctypes.c_double),
('kurtosis', ctypes.c_double),
('skewness', ctypes.c_double)]
library.MagickGetImageChannelStatistics.argtypes = [ctypes.c_void_p]
library.MagickGetImageChannelStatistics.restype = ctypes.POINTER(ChannelStatistics)
</code></pre>
<ol start=“3”>
<li>扩展<code>wand.image.Image</code>,并使用新支持的方法。在</li>
</ol>
^{pr2}$