Как избежать создания мипмапов для dds с помощью python Wand?

Окружение:

python — 3.6.6
Wand — 0.5.7

Пример кода:

Часть этого файла

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 MIP-карт (16px, 8px, 4px, 2px, 1px).

Я нашел пример CLI для ImageMagic, как отключить создание MIP-карт для выходных файлов dds -› этот ответ
Но мне нужно сделать то же самое, используя python и Wand.

Вопрос:

Как предотвратить / избежать / отключить / удалить MIP-карты в выходном файле с помощью библиотеки Wand и python.


person Yuriy Leonov    schedule 22.11.2019    source источник


Ответы (2)


Вы должны использовать 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')
person emcconville    schedule 22.11.2019

На основе 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).

person Yuriy Leonov    schedule 22.11.2019