读取PNG像素的Alpha。通过纯Python的快速方式?

时间:2009-11-14 00:30:09

标签: python png

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

现在我知道编译好的朋友总会快得多,但我希望因为我“只是”想要读取一组像素的alpha,这可能是足够快纯粹的Python解决方案可以让人联想到。有人有什么好主意吗?

虽然,我已经尝试过PyPNG,而且太慢,所以我不期待任何神奇的解决方案。尽管如此,我不得不问。

感谢任何回复!

仅供参考,我将要阅读的图像平均大约在512 * 512到2048 * 2048之间,我将在任何地方读取从一个到所有像素的alpha(乘以几百万次) ,但值可以存储,因此不会读取两次。)

2 个答案:

答案 0 :(得分:2)

从PNG中获取数据需要解压缩数据并对其进行解压缩。对于您的应用程序,这些在Python中可能会太慢。一种可能性是从PyPNG开始并摆脱它不需要的任何东西。例如,它可能存储从PNG读取的所有数据,而您看到的一些低速可能是由于内存分配造成的。

答案 1 :(得分:0)

当你说PyPNG太慢时,它有多慢?换句话说,速度有多快? PyPNG没有做任何愚蠢的事情让自己变慢,但它是用Python编写的。

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

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