Python:图像文件读取与流读取之间的差异

时间:2019-05-23 12:14:11

标签: python image stream

我尝试了两种技术来读取Python中的图像文件,期望它们的行为相同。奇怪的是,我看到从文件读取的字节有所不同。

第一种技术是调用open()和read()。 第二种技术是调用cv2.imread(),然后将其保存到BytesIO流中,最后从流中读取它。

第一种技术:

image_stream = open("Input.jpg", "rb")

image_stream.seek(0)

print(image_stream.read(32))

第二种方法:

shelf_img = cv2.imread("Input.jpg")

image = array_to_img(shelf_img)

streamBuf = io.BytesIO()

image.save(streamBuf, format='JPEG')

streamBuf = io.BufferedReader(streamBuf)

streamBuf.seek(0)

print(streamBuf.read(32))

我希望两种技术的输出(前32个字节)都相同。但是,这是我所看到的:

第一种技术:

  

b'\ xff \ xd8 \ xff \ xe1M \ x0cExif \ x00 \ x00II * \ x00 \ x08 \ x00 \ x00 \ x00 \ x0c \ x00 \ x00 \ x01 \ x04 \ x00 \ x01 \ x00 \ x00 \ x00 \ xc0 \ x0c'

第二种方法:

  

b'\ xff \ xd8 \ xff \ xe0 \ x00 \ x10JFIF \ x00 \ x01 \ x01 \ x00 \ x00 \ x00 \ x01 \ x00 \ x01 \ x00 \ x00 \ xff \ xdb \ x00C \ x00 \ x08 \ x06 \ x06 x06 \ x07 \ x06 \ x05 \ x08'

关于我所缺少的任何建议吗? 谢谢。

0 个答案:

没有答案