【问题标题】:Using Python convert binary data to bmp image file使用 Python 将二进制数据转换为 bmp 图像文件
【发布时间】:2015-11-03 23:01:33
【问题描述】:

现在我有了二进制数据,但我无法使用 write() 函数将它们转换为 bmp 文件

详情

f.write(binary_data,"new.bmp")

TypeError: 需要一个类似字节的对象,而不是 'str'

其实我只是想修改一些图像数据来创建一个新的图像。我只知道,

  1. 打开图片并读取数据
  2. 将数据转成二进制(因为我要修改一些位数据)
  3. 写入数据然后保存

似乎 write(str_data) 在早期的 python 版本中确实有效。 (我参考了其他关于将数据写入图像的方法。)
我尝试使用 data.encode('hex')

LookupError: 'hex' 不是文本编码;使用 codecs.encode() 来 处理任意编解码器

还有其他方法可以修改位数据,然后将它们写入 bmp 文件吗?

【问题讨论】:

  • 我猜是 Python 3。在那里你应该有bytes 类型的二进制数据。也许您将数据初始化为字符串。 bytes() 或只是b'' 将创建一个空的bytes
  • 非常感谢!我已经解决了这个问题。但是 bytes() 没有用。因为它只返回一个byte。 BMP 文件的类型是字节列表。所以这里应该使用 bytearray() :>

标签: python image bmp


【解决方案1】:

我已经解决了这个问题。
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)
:>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-07
    相关资源
    最近更新 更多