【问题标题】:How to avoid creating mipmaps for dds using python Wand?如何避免使用 python Wand 为 dds 创建 mipmap?
【发布时间】:2019-11-22 16:57:36
【问题描述】:

环境:

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 的 CLI 示例如何禁用为输出 dds 文件创建 mipmap -> this answer
但我需要使用 python 和 Wand 做同样的事情。

问题:

如何使用Wand 库和python 防止/避免/禁用/删除输出文件中的mipmap。

【问题讨论】:

    标签: python python-3.x imagemagick wand dds-format


    【解决方案1】:

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

    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')
    

    【讨论】:

      【解决方案2】:

      基于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)。

      【讨论】:

        猜你喜欢
        • 2021-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多