我正在开发一个程序,该程序使用 BMP 和透明层的单独文件。我需要将它们转换为 PNG,因此我在 python 中使用 PIL 来执行此操作。但是,我需要十六进制透明文件中的数据,以便可以将其添加到图像中。我正在使用 binascii.hexlify 函数来做到这一点。
现在,我遇到的问题是由于某种原因,数据在通过 hexlify 函数后(我已经通过逐段检查代码系统地缩小了范围),看起来与在我的十六进制编辑器中不同,并且是造成图像轻微变形。我似乎无法弄清楚我哪里出错了。
这是我的代码中有问题的部分:
filename = askopenfilename(parent=root)
with open(filename, 'rb') as f:
content = f.read()
f.close()
hexContent = binascii.hexlify(content).decode("utf-8")
我的意见
我的输出(这是写入文件的十六进制内容。由于我知道文件的写入不会出错,并且与我的实际程序无关,因此我没有将该部分添加到代码片段中)
在有人问之前,我尝试了 codecs.encode(content, 'hex') 和 binascii.b2a_hex(content)。
至于我怎么知道是这部分搞砸了,我打印了 binascii.hexlify(content) 并找到了与十六进制编辑器中相同的部分,它看起来与我最后得到的相同。
出错的另一种可能性是在“打开(文件名,'rb')”步骤中。我还没有想到一种方法来测试它。因此,任何帮助或建议将不胜感激。如果您需要我用于测试目的的文件之一,我很乐意在此处添加一个。