Преобразование из PPM P3 в PPM P6 и обратно с помощью Python Wand - PullRequest
0 голосов
/ 07 мая 2020

Первоначально я пытался использовать Python Pillow для преобразования изображения ppm p3 в jpg, png и т.д. c, когда я понял, что Pillow допускает только ppm p6.

Я испробовал множество способов решить эту проблему, но не нашел решения. Я обнаружил, что с помощью ImageMagick вы можете преобразовать изображение в ppm p3 и обратно в p6, поэтому я подумал, что если бы я смог найти способ использовать ImageMagick в моем файле python, я мог бы преобразовать изображения p3 в p6, что позволило бы им python подушки.

Итак, я установил ImageMagick и python Wand, чтобы попытаться добиться этого. Однако я не знаю, как это сделать с помощью Wand и поддерживает ли Wand это вообще. Я провел много исследований в Интернете и просмотрел документацию, но, похоже, не нашел ответа.

Еще одна альтернатива, которую я выбрал для решения моей проблемы, - это попробовать и вручную конвертировать между ppm p3 и p6 путем записи в файлы. Другими словами, преобразование данных ASCII в двоичные данные и наоборот. Это возможное решение также поставило меня в тупик из-за того, насколько сложно прочитать двоичный файл и каким-то образом расшифровать эту информацию в приемлемый p3 ASCII.

Я знаю, что могу просто вручную конвертировать между p3 и другими форматами, используя ImageMagick напрямую, но я хочу сделать это, используя python, потому что я пытаюсь написать приложение python, которое может выполнять базовые операции c манипулирование изображениями, и я хочу написать его, чтобы пользователи могли загружать и использовать изображения p3. Я также написал алгоритм для проекта класса, который специально работает только с изображениями ppm p3, и было бы неплохо, если бы существовал способ быстрого преобразования из jpg в ppm p3, чтобы использовать этот алгоритм, а затем быстро конвертировать обратно.

Если есть способ (независимо от того, использует он Wand или нет) преобразовать между ppm p3 и ppm p6 с помощью python, пожалуйста, дайте мне знать!

1 Ответ

1 голос
/ 07 мая 2020

Вы можете управлять получением P3 или P6, установив compression следующим образом:

from wand.image import Image                                                                                          

# By default, you will get P6 (compressed binary)
with Image(width=100, height=100, pseudo='plasma:') as img: 
    img.save(filename='P6.ppm') 

# If you specify "compression='no'", you will get P3 (uncompressed ASCII)
with Image(width=100, height=100, pseudo='plasma:') as img: 
    img.compression = 'no' 
    img.save(filename='P3.ppm')

Ключевые слова : Python, палочка, сжатие, PPM, NetPBM, P3 , П6 сырые биты.

...