python - 如何将此(字节)字符串转换为枕头图像?
问题描述
我通过 comm.socketServerScreenShot() 从 BizHawk-Emulator 获得了这个字节串。我知道它是 PNG 和十六进制编码的。所以我试图解码它(整个和分割的字符串),但是有一些无效的十六进制数字(?)。
但是如何将其转换为可用的图像?
我还阅读了有关 PNG 的此页面,并且我了解其中的一些内容,但是,我不知道如何对字符串进行“反向十六进制转储”。
img的一个txt:HexImage.txt
解决方案
您面临的问题很可能是由于字符编码问题。如果将接收到的数据存储在变量中,Python 会将这些\xNN
值解释为字符,因此需要对它们进行编码,然后才能将它们保存到磁盘。
编码的选择会写入不同的数据。通常,您希望将数据存储为“utf-8”(Linux 中的标准和最便携的)或某种 Windows 格式,例如“windows-1252”。但是,在这种特殊情况下,我们处理的不是文本或符号,而是原始数据。因此,上述两种编码都不会给出正确的工作输出。需要的是,raw_unicode_escape
因为这将在不修改底层位模式的情况下对字符进行编码。
因此,要存储图像,我们需要类似的东西:
# Triple quote string, as it may contain both string markers ('")
img = """\x89PNG\r\n\x1a\n\x00\x00 ... \x00\x00\x00IEND\xaeB`\x82"""
with open("image.png", "wb") as f:
f.write(img.encode("raw_unicode_escape")
我在我的电脑上运行了这个程序,得到了一张显示一个小男人在房子前面的图像。
推荐阅读
- sql-server - 使用 SQL Server 更改 XML 模板并保存到目录
- node.js - Next.js:错误 - ./node_modules/etag/index.js:22:0 未找到模块:无法解析“fs”null
- python - 以意外行为拆分字符串?
- apache-spark - 在 Visual Studio Code 中调试 PySpark
- reactjs - Plesk 显示 404 页面未找到 Reactjs
- reactjs - 为什么json中的数据未定义?
- opengl - 在 yocto 中将 opengl 添加到 core-image-base
- javascript - 在 protractor-beautiful-reporter 显示的日志中添加一些自定义文本
- jenkins - 詹金斯:如何使用扩展选择参数插件的“绑定”字段?
- android - 我遇到了这个错误:异常:Gradle task assembleDebug failed with exit code -1