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



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

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

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

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

我知道我可以直接使用ImageMagick在p3和其他格式之间手动转换,但我想使用python来实现,因为我正在尝试编写一个可以进行基本图像操作的python应用程序,我想编写它,以便用户可以上传和使用p3图像。我还为一个只专门处理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原始位。

最新更新