Env :

Python - 3.6.6
Жезл - 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 mipmaps (16px, 8px, 4px, 2px, 1px).

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

Вопрос:

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

-1
Yuriy Leonov 22 Ноя 2019 в 19:57

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')
1
emcconville 22 Ноя 2019 в 18:58

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

0
Yuriy Leonov 22 Ноя 2019 в 18:00