【发布时间】:2015-08-22 01:44:33
【问题描述】:
我真正在做的是使用 python 从 JPEG 创建一个 BMP 文件,它有一些包含图像大小、高度或宽度等信息的标题数据,所以基本上我想读取一个 JPEG 文件,获取它的宽度和高度,计算一个BMP文件的新大小并将其存储在header中。
假设 BMP 文件的新大小为 40000 字节,其十六进制值为 0x9c40,现在由于标题中有 4 字节空间来保存它,我们可以将其写为 0x00009c40。在 BMP 头数据中,先写入 LSB,然后写入 MSB,所以我必须在文件中写入 0x409c0000。
我的问题:-
-
我能够在 C 中做到这一点,但我完全不知道如何在 Python 中做到这一点。
例如,如果我有
i=40000,通过使用str=hex(i)[2:],我得到了十六进制值,现在通过一些编码,我能够添加额外的零,然后反转代码。现在如何在文件中将这个'409c0000'数据写成十六进制? -
BMP 文件的标头大小为 54 字节,所以还有另一种方法可以将数据存储在像
str='00ffcf4f...'(最多 54 字节)这样的字符串中,然后将整个 str 一次转换为十六进制并将其写入文件? -
我的朋友告诉我从
binascii使用unhexlify, 通过执行unhexlify('fffcff'),我得到'\xff\xfc\xff',这是我想要的,但是当我尝试unhexlify('3000')时,我得到'0\x00'`,这不是我想要的。任何包含 3、4、5、6 或 7 的值都是相同的。这样做是否正确?
【问题讨论】:
-
您可能想研究使用Pillow 在 Python 中操作和转换位图。或者您可以使用ImageMagick 套件中的
convert程序。