Я пытаюсь найти способ сжатия изображений (например, PNG) с помощью любого алгоритма S3TC/DXT с использованием библиотек Python.
Как я вижу в формате DDS библиотеки Подушка(ПИЛ) в разделе Read-only formats
. Поэтому подушку нельзя использовать для этой цели.
Поиск в гугле не дал положительных результатов.
Можно ли сделать с питоном?
Кто-нибудь может дать ссылку на библиотеки с таким функционалом? (проверено на практике)
Формат DDS не является обязательным для моего случая. Мне нужен только сжатый файл.
Это необходимо для создания текстур для будущего использования.
Библиотека должна поддерживать разные алгоритмы сжатия.
@MarkSetchell Мне нужно иметь возможность выбирать алгоритм сжатия.
Вы можете использовать Python Палочка. Здесь я создаю псевдоизображение с пурпурно-желтым градиентом и сохраняю как DDS
:
from wand.image import Image
with Image(width=200, height=80, pseudo='gradient:magenta-yellow') as img:
img.save(filename='result.dds')
Или, если вы хотите загрузить файл PNG и сохранить его как DDS:
with Image(filename='input.png') as img:
img.save(filename='result.dds')
Это просто сохранение в другом расширении. Просмотрел Wand
и не нашел возможности выбрать алгоритм сжатия: типа DXT1-5 и т.д. khronos.org/opengl/wiki/Image_Format#Compressed_formats
Если я использую приведенный выше код и сохраняю как TIFF, я могу добавить дополнительную строку перед img.save()
, которая устанавливает img.compression='lzw'
или img.compression='zip'
, и это учитывается. Если я поставлю img.compression='dxt5'
, это не будет считаться... может быть, Эрик узнает @emcconville
ага, docs.wand-py.org/en/0.5.2/wand/image.html?highlight=compression действительно поддерживается, и похоже даже может сохранять в формате dds со сжатием. Кстати, оффтоп: файлы .dds можно использовать в личных проектах? Я имею в виду, это законный формат? :) (знаю, это может прозвучать глупо)
Вы хотите сохранить изображение в формате Microsoft Direct Draw Surface 1/5 с расширением
.dds
?