我想在Python中读取一张JPG图片。
目前为止,我的代码是:
f = open("test.jpg")
ima = f.read(16)
print "'%s'"% (ima)
它读取了16个字节并在控制台显示字符串,但似乎我不能显示超过32个字节。为什么?
当尝试读取32个或更多字节时,输出结果与读取16个字节时相同。为什么我不能读取超过16个字节的jpeg图像?
这里有两个问题:
将读取模式设置为二进制。这样file.read
函数就不会尝试转换 '\r\n' 序列。
你正在尝试向控制台打印以 NULL 结尾的字符串。 print
函数会找到您字符串中的第一个零字符并终止。使用binascii.hexlify
将其转换为十六进制:
f = open("test.jpg", "rb")
ima = f.read(16)
print "%s" % (binascii.hexlify(ima))
f = open("test.jpg", "rb") # 'rb' here means "read mode, binary"
请参考类似的问题,以获得更为详细的描述。
repr()
或许更加有用。 - Greg Hewgill(16)
参数是指它读取16个字节,还是以16位为单位读取? - AllTradesJack