在Mac OS终端上使用Python 3.x读取bmp文件的像素值

时间:2017-11-15 11:02:34

标签: python macos python-3.x binary bmp

我正在尝试阅读width文件的heightcolor depthbmp,并将值输出为Integers。我使用.seek方法跳过不需要的字节,使用.read方法读取包含所需信息(offsets 18, 22 and 28)的字节。

def bytes2int(b):
    res = 0
    for x in b[::-1]:
        res = (res << 8) + x
    return res
f = open("red.bmp", "rb")
f.seek(18)
print("Width: ", bytes2int(f.read(4)), "px")
print("Height: ", bytes2int(f.read(4)), "px")
f.seek(2, 1)
print("Colordepth: ", bytes2int(f.read(2)), "bmp")
f.close()

所以当我尝试使用mac os终端运行代码时,我收到一个TypeError ...

Traceback (most recent call last):

File "Untitled.py", line 12, in <module>
    print("Width: ", bytes2int(f.read(4)), "px")

File "Untitled.py", line 8, in bytes2int
    res = (res << 8) + x

TypeError: unsupported operand type(s) for +: 'int' and 'str'

我现在想要解决这个问题好几周了,如果有人抽出时间帮助我,我会非常高兴。

这是bmp test file

0 个答案:

没有答案