【问题标题】:Convert from PPM P3 to PPM P6 and back using Python Wand使用 Python Wand 从 PPM P3 转换为 PPM P6 并返回
【发布时间】:2020-05-07 05:37:11
【问题描述】:

当我意识到 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 以使用该算法然后快速转换回来,那就太好了。

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

【问题讨论】:

    标签: python imagemagick file-conversion wand ppm


    【解决方案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 rawbits。

    【讨论】:

      猜你喜欢
      • 2018-07-08
      • 1970-01-01
      • 2022-11-30
      • 1970-01-01
      • 2021-12-16
      • 2018-08-05
      • 2011-04-30
      • 2016-02-09
      • 1970-01-01
      相关资源
      最近更新 更多