使用 Python 将二进制数据转换为 bmp 图像文件
Using Python convert binary data to bmp image file
现在我有了二进制数据,但我无法使用 write() 函数将它们转换为 bmp 文件
详情
f.write(binary_data,"new.bmp")
TypeError: a bytes-like object is required, not 'str'
其实我只是想修改一些图像数据来创建一个新的图像。我只知道,
- 打开图片并读取数据
- 将数据转为二进制(因为我要修改一些位数据)
- 写入数据然后保存
write(str_data) 似乎在早期的 python 版本中有效。 (我参考了其他关于将数据写入图像的方法。)
我尝试使用 data.encode('hex')
LookupError: 'hex' is not a text encoding; use codecs.encode() to
handle arbitrary codecs
还有其他方法可以修改位数据然后将它们写入bmp文件吗?
我已经解决了这个问题。
BMP 图像文件是用字节数组存储的。只需使用 bytearray() 函数即可。
我的解决方案是:
new_data = []
for i in range(0, len(data), 8):
new_data.append(data[i:i+8]) # 8 digit binary list
int_data = []
for i in new_data:
int_data.append(int(i,2)) # bytearray will convert decimal to hex
a= bytearray(int_data)
然后它可以使用 write(a)
:>
现在我有了二进制数据,但我无法使用 write() 函数将它们转换为 bmp 文件
详情
f.write(binary_data,"new.bmp")
TypeError: a bytes-like object is required, not 'str'
其实我只是想修改一些图像数据来创建一个新的图像。我只知道,
- 打开图片并读取数据
- 将数据转为二进制(因为我要修改一些位数据)
- 写入数据然后保存
write(str_data) 似乎在早期的 python 版本中有效。 (我参考了其他关于将数据写入图像的方法。)
我尝试使用 data.encode('hex')
LookupError: 'hex' is not a text encoding; use codecs.encode() to handle arbitrary codecs
还有其他方法可以修改位数据然后将它们写入bmp文件吗?
我已经解决了这个问题。
BMP 图像文件是用字节数组存储的。只需使用 bytearray() 函数即可。
我的解决方案是:
new_data = []
for i in range(0, len(data), 8):
new_data.append(data[i:i+8]) # 8 digit binary list
int_data = []
for i in new_data:
int_data.append(int(i,2)) # bytearray will convert decimal to hex
a= bytearray(int_data)
然后它可以使用 write(a)
:>