我正在使用PyPNG包读取一个简单的png文件。
返回的像素数据是itertools.imap对象。
如何读取这些数据。

import png, array
reader = png.Reader(filename='image.png')
w, h, pixels, metadata = reader.read()

(877, 615, <itertools.imap object at 0x2a956a5b50>, {'bitdepth': 8, 'interlace': 0, 'planes': 3, 'greyscale': False, 'alpha': False, 'gamma': 0.45455, 'size': (877, 615)})

pixels是itertools.imap对象,我假设它包含像素信息。
谢谢
当做

最佳答案

itertools.imap返回iterable。您应该能够像遍历任何其他列表一样遍历它。
当然,一个关键的区别是,因为它是一个迭代器,所以只能对它进行一次迭代。你也不能索引它
编辑(应操作人员要求):
如何遍历列表
假设您有一个名为L的列表,并且L如下所示:

L = ['a', 'b', 'c', 'd']

那么,L处的元素及其各自的指数为:
+-------+---------+
| index | element |
+-------+---------+
|   0   |   'a'   |
+-------+---------+
|   1   |   'b'   |
+-------+---------+
|   2   |   'c'   |
+-------+---------+
|   3   |   'd'   |
+-------+---------+

注意,因为python有基于零的索引,所以没有索引4,即使L中有四个项。
现在,如果您想要L中索引3处的项,您可以执行L[3]。如果您想要在L中索引2处的项,则需要执行L[s]等操作。
要在L上迭代(假设要打印出值):
for elem in L:
    print elem

另一种方式:
for i in range(len(L)): # lookup range() and len()
    print L[i]

希望这有帮助

关于python - 如何从PyPNG的阅读器读取itertools.imap对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13485243/

10-12 22:00