代码之家  ›  专栏  ›  技术社区  ›  Lee Olayvar

读取PNG像素的alpha。快速通过纯蟒蛇?

  •  1
  • Lee Olayvar  · 技术社区  · 16 年前

    我有一个嵌入的64位Python实例不喜欢PIL的问题。在我开始用尽更多的方法让一个编译后的图像编辑器为我读取像素(如ImageMagick)之前,我希望这里的任何人都能想到一个纯粹的python解决方案,它的速度可以与编译后的对应方案相媲美。

    现在我意识到编译后的朋友会更快,但我希望这是因为我“只是”想读取一组像素的alpha,这可能是 足够快 纯python解决方案可以变戏法。有人有什么好主意吗?

    不过,我试过Pypng,那就是 远的 太慢了,所以我不指望有什么神奇的解决办法。我不得不问。

    感谢您的回复!

    作为参考,我将要读取的图像平均约为512*512到2048*2048,我将在任何位置读取从一个到所有像素的alpha(乘以几百万次,但这些值可以存储,所以读取两次不会完成)。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Ned Batchelder    16 年前

    从PNG中获取数据需要解包数据并对其进行解压缩。对于您的应用程序来说,这些在Python中可能太慢了。一种可能是从Pypng开始,去掉其中任何你不需要的东西。例如,它可能存储了它从PNG读取的所有数据,而您看到的一些较慢的速度可能是由于内存分配。

        2
  •  0
  •   David Jones Jake Shorty    16 年前

    当你说Pypng太慢时,它有多慢?换一种说法,多快才足够快?Pypng不做任何愚蠢的事情来让自己变慢,但它是用Python编写的。

    确保使用read()逐行读取图像,并确保使用第[3::4]行提取alpha通道。使用切片法提取alpha通道并不比读取整个图像慢。

    我添加了一些 notes to the PyPNG documentation about its speed .