gpt4 book ai didi

Python:Image.frombytes() 参数

转载 作者:太空宇宙 更新时间:2023-11-03 18:33:26 24 4
gpt4 key购买 nike

所以我有一个文件test.dat,其中包含图像数据。前两个字节是宽度,后两个字节是高度,然后文件的其余部分是像素数据。如何读取该文件并创建图像?

这是我尝试过的:

with open('test.dat', 'rb') as file:
width = struct.unpack('H', file.read(2))
print width
height = struct.unpack('H', file.read(2))
print height
image = Image.frombytes('L', (width, height), file.read())

打印宽度和高度给出了我期望的值。但是,我得到以下信息:TypeError:需要一个整数。在处理这个问题时,我注意到如果我只输入 (640, 480) 而不是 >(宽度,高度),效果很好(我知道我的尺寸应该是 640、480)。因此,似乎按原样传递宽度和高度会导致错误,因为它们不是整数,而是短裤。

因此,我尝试将unpack函数中的H改为i,尝试读取两个字节的数据并将其转换为int。然而,这给了我和以前一样的错误。

这是怎么回事?

谢谢。

最佳答案

struct.unpack 返回一个元组:

In [85]: struct.unpack('H', struct.pack('H', 640))
Out[85]: (640,)

因此,您可以使用

width = struct.unpack('H', file.read(2))[0]

(注意最后的 [0])——但是有一种更简单的方法,可以用一个来解压 widthheight调用struct.unpack

struct.unpack 返回一个元组,因为它可以一次解压多个值。例如,格式字符串'2H'表示第二个参数代表2个无符号short:

In [89]: struct.unpack('2H', struct.pack('2H', 640, 480))
Out[89]: (640, 480)

因此,您可以使用简化代码

width, height = struct.unpack('2H', file.read(4))

关于Python:Image.frombytes() 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22025675/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com