从PPM P3转换为PPM P6,然后使用Python Wand

时间:2020-05-07 05:37:11

标签: python imagemagick file-conversion wand ppm

当我意识到Pillow仅允许ppm p6时,我最初试图使用Python Pillow将ppm p3图像转换为jpg,png等。

我已经尝试了多种方法来解决此问题,但是我没有找到解决方案。我发现使用ImageMagick可以将图像转换为ppm p3,然后再转换回p6,所以我认为,如果可以在python文件中找到使用ImageMagick的方法,就可以将p3图像转换为p6,从而可以使用它们。通过蟒蛇枕头。

所以我安装了ImageMagick和python Wand来尝试实现这一目标。但是,我不知道如何使用Wand或Wand甚至支持此功能。我已经在网络上进行了大量研究,并仔细阅读了文档,但似乎找不到答案。

我用来解决问题的另一种方法是尝试通过写入文件在ppm p3和p6之间手动转换。换句话说,将ASCII数据转换为二进制数据,反之亦然。这种可能的解决方案也使我感到困惑,因为读取二进制文件非常困难,并且很难以某种方式将信息解密为可接受的p3 ASCII。

我知道我可以直接使用ImageMagick直接在p3和其他格式之间进行手动转换,但是我想使用python进行转换,因为我正试图编写一个可以执行基本图像操作的python应用程序,并且我想编写以便用户可以上传和使用p3图像。我还为一个仅适用于ppm p3图像的类项目编写了一种算法,如果有一种快速将jpg转换为ppm p3以使用该算法然后快速转换回去的方法,那就太好了。

如果有办法(无论是否使用魔杖)使用python在ppm p3和ppm p6之间转换,请告诉我!

1 个答案:

答案 0 :(得分:1)

您可以通过设置compression来控制是否获得P3或P6:

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,P6原始位。