如何在Python中将字节从字符串转换为图像?

Kow*_*eko 3 python image python-3.7

我在文件内有一个字符串格式的字节对象.txt,但我不知道如何将其转换回字节对象,就像img=b'\x00\x00\x00'我可以将其写回到图像中一样。

返回图像格式时,图像应该是黑色正方形。

b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\xdd\x00\x00\x00\xdd\x08\x06\x00\x00\x00?\xc4w\x1a\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\x04gAMA\x00\x00\xb1\x8f\x0b\xfca\x05\x00\x00\x00\tpHYs\x00\x00\x0e\xc3\x00\x00\x0e\xc3\x01\xc7o\xa8d\x00\x00\x00!tEXtCreation Time\x002019:07:22 19:10:08\xa0\x9d\xf4\xb4\x00\x00\x02\x80IDATx^\xed\xd3\xb1\r\xc00\x00\xc30\xa7\xff\xff\xdcf\xe8\r\x9aH\xc0\xf0\x05:\xdb\xde; \xf2\xfc\x0fDD\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x10\x13\x1d\xc4D\x071\xd1ALt\x90\xda>\xddB\x02\xb9L3W\xe8\x00\x00\x00\x00IEND\xaeB`\x82'
Run Code Online (Sandbox Code Playgroud)

.txt使用字节对象打开文件file

file=open('filename.txt','r').read()
Run Code Online (Sandbox Code Playgroud)

我尝试了这个,但它file是字符串格式

file=open('filename.txt','r').read()
Run Code Online (Sandbox Code Playgroud)

Gin*_*pin 7

您应该以二进制 ( "rb") 形式读取该文件。

file = open('filename.txt', 'rb').read()
print(type(file))  # <class 'bytes'>
print(file)        # b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x01\x06\x0

with open("image.png", "wb") as img:
    img.write(file)
Run Code Online (Sandbox Code Playgroud)

现在,我不知道为什么将图像字节存储在文本文件中,但更好的实现是使用Pillow等图像相关模块来读写图像文件:

from PIL import Image

file = Image.open("input.png")
file.save("output.png")
Run Code Online (Sandbox Code Playgroud)