在 Python 3.9.6 中将 b 字符串转换为 png

Posted

技术标签:

【中文标题】在 Python 3.9.6 中将 b 字符串转换为 png【英文标题】:Converting b-string to png in Python 3.9.6 【发布时间】:2021-10-11 18:34:17 【问题描述】:

我一直在尝试将此 b 字符串转换为 png 图像。

这是从 api 接收的条形码的字节字符串。它被称为 Cloudmersive 一维条码生成器 api。

我尝试使用 base64.b64decode() 然后将二进制文件写入图像文件,但它不起作用。我也尝试过使用 BytesIO,但这也不起作用。 b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00h\x00\x00\x00d\x08\x02\x00\x00\x00\xe5\xbc\xe2\x8d \x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\x04gAMA\x00\x00\xb1\x8f\x0b\xfca\x05\x00\x00\x00\tpHYs\x00 \x00\x0e\xc3\x00\x00\x0e\xc3\x01\xc7o\xa8d\x00\x00\x0c\x8aIDATx^\xed\x95\xd1\x95d\xc5\x0e\x041\x0f\x830\x07_p\ xe5y\xc2SU\xce\xc4\x84\xa4Z\x18\xf6\xe3C'\x94\xca\xbb\xa7\x81\xc3o\x7f\x8b\xdf~;+\xd3R\x9c\x86\xf2\ xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8' \xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc \xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3 \xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb \t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t ;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8 '\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\ xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\ xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\ xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\ t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t; \xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4 \x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\ x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\ x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\ x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\ xf0"\ xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\ xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\ xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\ x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\ x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\ x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\ x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\ xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\ xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\ x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R \x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c \x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86 \xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2 \xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8 '\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\ xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\ xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\ xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\ t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t; \xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4 \x1 a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\ x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\ x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\ xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0" \xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe \xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3 \xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac \x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84 \x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968 \x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12 \x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M \xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG \xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R \x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c \x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86 \xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2 \xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8 '\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\ xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\ xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe 3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\ xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\ t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t; \xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4 \x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\ x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\ x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\ x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\ xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0" \xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe \xc3\ xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\ x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\ x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\ x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\ x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\ xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\ xd5R\x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\ x9c\x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\ x86\xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\ xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86 \xf2\xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2 \xb8'\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8 '\xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\ xdc\xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083M\xdbG\xd5R\x9c\x86\xf2\xb8'\xdc\ xe3\xbb\t;\xc4\x1a\x85\x11Z\xf0"\xbe\xc3\xac\x84\x968\x12\x083\xcd\xdc\x7f\xf1M~\xfdp?\xc9\xaf\x1f \xee'\xf9\xc6\x0f\xf7\xd7\x1f\xf7\xbf\xf7\xe2\xf7?\xff\xf7\x91R7\x87\xff\xfb\xf3\xf7\x1fUs\xbf \xf3+\xf9\xe4\x8f\xbf\xfa\xe1c?\x87b\xfb\xec\xef>\xfe\x95\x1dT\xfe\x01\xff\xfa\xc3\x9d\x0f\xcek\xee \xab\xfd\xc6|\xa7\xaf\xcf>\xb6S\xf5\xd7\xef\xcds\xfd|\xcf\xd7\xeb\x85\x1e\xafL\xc5\x97\xea\xcb \xf9\xc3\xbf\xfb\xf8\xd5\x0f\xfb\x1e\xff\xf6\xc3\xe9\xd5w\xf9\xf8F\xf7\xfe\xf6\xfb\x1f\x7f\xe8\x07\ xfa\xba\x9aW\xd3\xec\xa7\x9e\x7fx\xe2\xfbM\xda\x13\x9f\xcb3\xfc\xfe\xe3\xe7\xfc\x95~\x87\xff\xf8o\x1c_\xe3 \xaf \xbf>>n\x7f\xb3\xce\xa3)N\xaeg\x8e\xae\xfb\xe6\xbf\xfc\xcf\xe1\x1f\xbf\xee\xe5\xec\xe1\xf3\x9b\x7f\xd2\x9b_\xbdV\xd4\ xd7\xff\x82O\xd7\x1f\xd6\xc9\xe1\xeb\x9d\xedk\xfe\xf7\xc7\xf7Wx\xf1\x9d\x1f\xee\x17\x0f~\xfdp?\xc9\xaf\ x1f\xee \xa7\xf8\xfb\xef\xff\x03\x11\xda\xa3\xaefM\x89\xbf\x00\x00\x00\x00IEND\xaeB`\x82'

【问题讨论】:

【参考方案1】:

无需对该字节字符串使用b64decode 或任何其他操作,它已准备好按原样写入文件。

with open(r'c:\temp\temp.png', 'wb') as f:
    f.write(b_str)

它产生这个:

【讨论】:

@munjpate 将您的代码放在它所属的问题中。 我尝试过这样做,但是一旦创建了我的文件,它就会在 PyCharm 中显示“未加载图像” api 响应是一个字节对象。这是我的代码。我无法成功地将字节对象转换为字符串。有什么建议吗? with open('barcodes\\barcode.png', 'wb') as pic: pic.write(api_response) @munjpate 您是否确认该文件位于您期望的位置并且具有正确的名称?您是否尝试过使用其他应用程序打开它?我在答案中显示的图片来自您在问题中包含的数据字符串,因此对我有用。 我得到的 api 响应被认为是一个字符串而不是字节,尽管它在字符串前面有 b。 with open('barcodes\\barcode.png', 'wb') as pic: pic.write(api_response) 显示此错误 TypeError: a bytes-like object is required, not 'str' 除非我执行 api_response.encode('utf-8') 并在 f.write 中传递编码值。如果我打印响应然后将其复制并像您一样将其传递给代码,它不会显示任何错误。 @munjpate 你的字符串前面不会有b,除非它已经是一个字节字符串。你说的这些东西没有加起来,这让你的问题无法解决。

以上是关于在 Python 3.9.6 中将 b 字符串转换为 png的主要内容,如果未能解决你的问题,请参考以下文章

在python中将二进制转换为字符串

如何在python中将23位浮点数从字符串转换为浮点数并返回?

在python中将对象数据类型转换为字符串问题

如何在python中将数组字符串转换为数组[重复]

如何在 Python 中将字符串转换为字节数组

在 Python 3 中将二进制字符串转换为字节数组