【问题标题】:Converting PNG in text format back to file object将文本格式的 PNG 转换回文件对象
【发布时间】:2020-05-06 08:12:28
【问题描述】:

所以我有这个 websocket 调用,我将一个文件从 html 表单移交给我的 python 后端。我想说一切都很好,只是我的文件本身不会保存回图像。

我将检索这种格式的图像:

b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00c\x00\x00\x00c\x01\x03\x00\x00\x00\xb5\xf5,\xd6\x00\x00\x00\x06PLTE\x00\x00\x00\xff\xff\xff\xa5\xd9\x9f\xdd\x00\x00\x00\x02tRNS\xff\xff\xc8\xb5\xdf\xc7\x00\x00\x00\tpHYs\x00\x00\x0b\x12\x00\x00\x0b\x12\x01\xd2\xdd~\xfc\x00\x00\x00\xf1IDAT8\x8d\xcd\xd41\x8e\xc4 \x0c\x05PG\x14\x94s\x01$\xae\x91.W\x82\x0b\x84\xe1\x02\x93+\xd1q\x8dH\\ \xee(P<\x1e\xcd\xeef\x1b\xe2h\x8b\xd5\xb8\xe2u\xfe6\x00\xf4\xbb\xe0\x83\xb5\x01\xcc\x93\t\t\x06IH-$\xb5d>HJ\xc6is\xcb\xe0/h\x86\x82\xd7\x14\xf2z\xbb"j\xf3D\xf1\xe8\xac+\xce\xe7\xb3\xf1G\xda\xae\xb86\xad\xe21\xc1\xae6\rCj\xa0[\x90\x84\xb9\xc4DwX\xbd\xa4\x1d\xb8k\x9eDAID\n+-\xd5FQ\x95\x93\xd9\x07\xd0"i\x9f\xcacTD_\xbd\x9c\x08+\xcc\xa3q\xd0\x06I\xbb.<\x8c\xc0)%aZal\x0e\x14I\xe2\xc2\xd4<YQ\xbc[7\x95\x98\x7f6\xdd\x15\xdf\x177R$\x8b\xa2\x92\xf1\xd9npI\xa1\xf2*\xbe3\x9c\xca\xd7\xd7\x1d\xf4\xa2\x88\xc3\xf1c}o\xecL\xaf|\xbc\x84z\xa4\xed\xe9\xbf\x7f\xa2\xbf\xe9\t\xb2\xe0\xbc\x1a\xa1l|\xbb\x00\x00\x00\x00IEND\xaeB`\x82'

我知道这是一个纯文本格式的 png 文件,其中所有的 \x.. 都是不可打印的字符。我想要做的是将它转换回一个文件对象,该对象应该包含 mimetype、文件名以及最后的图像本身。

我该怎么做?

【问题讨论】:

  • 这能回答你的问题吗? PIL: Convert Bytearray to Image
  • 那个文本格式,其实包含了mimetype。因此,您可能想要重塑您的问题,以更好地匹配您想要实现的目标。投票结束,要么是因为它缺乏你想要实现的细节,要么是因为上面的评论已经解决了。

标签: python hex python-imaging-library


【解决方案1】:

这是一种二进制格式,只需将其写入文件即可找到您的图像。顺便说一句,这是一个二维码!

data=b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00c\x00\x00\x00c\x01\x03\x00\x00\x00\xb5\xf5,\xd6\x00\x00\x00\x06PLTE\x00\x00\x00\xff\xff\xff\xa5\xd9\x9f\xdd\x00\x00\x00\x02tRNS\xff\xff\xc8\xb5\xdf\xc7\x00\x00\x00\tpHYs\x00\x00\x0b\x12\x00\x00\x0b\x12\x01\xd2\xdd~\xfc\x00\x00\x00\xf1IDAT8\x8d\xcd\xd41\x8e\xc4 \x0c\x05PG\x14\x94s\x01$\xae\x91.W\x82\x0b\x84\xe1\x02\x93+\xd1q\x8dH\\ \xee(P<\x1e\xcd\xeef\x1b\xe2h\x8b\xd5\xb8\xe2u\xfe6\x00\xf4\xbb\xe0\x83\xb5\x01\xcc\x93\t\t\x06IH-$\xb5d>HJ\xc6is\xcb\xe0/h\x86\x82\xd7\x14\xf2z\xbb"j\xf3D\xf1\xe8\xac+\xce\xe7\xb3\xf1G\xda\xae\xb86\xad\xe21\xc1\xae6\rCj\xa0[\x90\x84\xb9\xc4DwX\xbd\xa4\x1d\xb8k\x9eDAID\n+-\xd5FQ\x95\x93\xd9\x07\xd0"i\x9f\xcacTD_\xbd\x9c\x08+\xcc\xa3q\xd0\x06I\xbb.<\x8c\xc0)%aZal\x0e\x14I\xe2\xc2\xd4<YQ\xbc[7\x95\x98\x7f6\xdd\x15\xdf\x177R$\x8b\xa2\x92\xf1\xd9npI\xa1\xf2*\xbe3\x9c\xca\xd7\xd7\x1d\xf4\xa2\x88\xc3\xf1c}o\xecL\xaf|\xbc\x84z\xa4\xed\xe9\xbf\x7f\xa2\xbf\xe9\t\xb2\xe0\xbc\x1a\xa1l|\xbb\x00\x00\x00\x00IEND\xaeB`\x82'
newFile = open("image.png", "wb")
newFile.write(data)
newFile.close()

然后加载它。

【讨论】:

  • 完美。这就像一个魅力,虽然它是第 3 行中的 newFile.write(data)。谢谢
猜你喜欢
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 2013-06-02
  • 2013-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
相关资源
最近更新 更多