使用 Python Wand 从 PPM P3 转换为 PPM P6 并返回

Convert from PPM P3 to PPM P6 and back using Python Wand

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

我已经尝试了很多方法来解决这个问题,但我还没有找到解决办法。我发现使用 ImageMagick,您可以将图像转换为 ppm p3,然后再转换回 p6,所以我想如果我能找到在我的 python 文件中使用 ImageMagick 的方法,我可以将 p3 图像转换为 p6,允许python 枕头使用它们。

所以我安装了 ImageMagick 和 python Wand 来尝试实现这一点。但是,我不知道如何使用 Wand 执行此操作,或者 Wand 是否支持此操作。我在网络上做了很多研究,也查看了文档,但我似乎找不到答案。

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

我知道我可以直接使用 ImageMagick 在 p3 和其他格式之间手动转换,但我想使用 python 来完成,因为我正在尝试编写一个 python 应用程序,它可以做基本的图像处理,我想写它,以便用户可以上传和使用p3图像。我还为一个 class 项目编写了一个算法,该项目仅专门用于 ppm p3 图像,如果有一种方法可以快速将 jpg 转换为 ppm p3 以使用该算法然后快速转换回来,那就太好了.

如果有办法(不管它是否使用 Wand)使用 python 在 ppm p3 和 ppm p6 之间进行转换,请告诉我!

您可以通过设置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,wand,压缩,PPM,NetPBM,P3,P6 rawbits。