首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从PyPNG的阅读器中读取itertools.imap对象

如何从PyPNG的阅读器中读取itertools.imap对象
EN

Stack Overflow用户
提问于 2012-11-21 09:57:58
回答 2查看 2.2K关注 0票数 2

我正在使用PyPNG包读取一个简单的png文件。

返回的像素数据是一个itertools.imap对象。

如何读取此数据。

代码语言:javascript
复制
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对象,我假设它包含像素信息。

谢谢

问候

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-21 10:06:52

itertools.imap返回一个可迭代的。您应该能够像迭代任何其他列表一样对其进行迭代。

当然,一个关键的区别是,因为它是迭代器,所以您只能遍历它一次。您也无法对其进行索引

编辑(根据OP的请求):

如何遍历列表

假设您有一个名为L的列表,L如下所示:

代码语言:javascript
复制
L = ['a', 'b', 'c', 'd']

然后,L的元素at和它们各自的索引是:

代码语言:javascript
复制
+-------+---------+
| index | element |
+-------+---------+
|   0   |   'a'   |
+-------+---------+
|   1   |   'b'   |
+-------+---------+
|   2   |   'c'   |
+-------+---------+
|   3   |   'd'   |
+-------+---------+

注意,因为python有从零开始的索引,所以没有索引4,即使L中有4个条目。

现在,如果您想要在L中索引3处的项,您可以使用L[3]。如果想要在L中索引2处的项,可以执行L[s],依此类推。

要遍历L (假设您想要打印值):

代码语言:javascript
复制
for elem in L:
    print elem

另一种方式:

代码语言:javascript
复制
for i in range(len(L)): # lookup range() and len()
    print L[i]

希望这能有所帮助

票数 4
EN

Stack Overflow用户

发布于 2013-04-05 16:50:31

最简单的(对于大图像不一定有效)是使用内置的list函数将迭代器转换为列表:

代码语言:javascript
复制
pixelsAsList = list(pixels)
print pixelsAsList[0] # the first row
print pixelsAsList[0][0] # The Red channel from the first pixel on the first row.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13485243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档