如何避免使用 python Wand 为 dds 创建 mipmap?

How to avoid creating mipmaps for dds using python Wand?

环境:

python - 3.6.6
Wand - 0.5.7

代码示例:

this file的一部分

from wand import image

with image.Image(filename='example_32_on_32_px.png') as img:
    img.compression = 'dxt3'
    img.save(filename='output.dds')

它将生成 output.dds,其中包含 5 个 mipmap(16px、8px、4px、2px、1px)。

我找到了 ImageMagic how to disable creation of mipmaps for output dds files ->
的 CLI 示例 但是我需要使用 python 和 Wand.

做同样的事情

问题:

如何使用 Wand 库和 python.

防止/避免/禁用/删除输出文件中的 mipmap

基于 ImageMagick/ImageMagick/blob/master/coders/dds.c 我发现了以下内容:option=GetImageOption(image_info,"dds:mipmaps");

所以我的问题的解决方案非常简单:

from wand import image

with image.Image(filename='example_32_on_32_px.png') as img:
    img.compression = 'dxt3'
    image.library.MagickSetOption(img.wand, b'dds:mipmaps', b'0')
    img.save(filename='output.dds')

如果设置 b'1' 而不是 b'0' 输出文件将只包含 1 个 mipmap (16px)。

您将使用 Image.options 字典来设置 属性。

from wand.image import Image

with Image(filename='example_32_on_32_px.png') as img:
    img.options['dds:mipmaps'] = '0'
    img.compression = 'dxt3'
    img.save(filename='output.dds')