python - 如何在python中解码二进制图像字符串
问题描述
我正在尝试通过 POST 请求向我创建的 AWS API 发送一个虚拟的 2x2px 二进制图像/png 文件,该 API 又将其中继到 AWS Lambda 服务。
Lambda 服务有一个 python 3.6 运行时,它接收event
对象中的图像为event["body"]
.
内容是图像的字符串表示形式:
"\ufffdPNG\r\n\u001a\n\u0000\u0000\u0000\rIHDR\u0000\u0000\u0000\u0002\u0000\u0000\u0000\u0002\b\u0002\u0000\u0000\u0000\ufffdԚs\u0000\u0000\u0000\tpHYs\u0000\u0000\u000b\u0013\u0000\u0000\u000b\u0013\u0001\u0000\ufffd\ufffd\u0018\u0000\u0000\u0006=iTXtXML:com.adobe.xmp\u0000\u0000\u0000\u0000\u0000<?xpacket begin=\"\ufeff\" id=\"W5M0MpCehiHzreSzNTczkc9d\"?> <x:xmpmeta xmlns:x=\"adobe:ns:meta/\" x:xmptk=\"Adobe XMP Core 5.6-c142 79.160924, 2017/07/13-01:06:39 \"> <rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"> <rdf:Description rdf:about=\"\" xmlns:xmp=\"http://ns.adobe.com/xap/1.0/\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:photoshop=\"http://ns.adobe.com/photoshop/1.0/\" xmlns:xmpMM=\"http://ns.adobe.com/xap/1.0/mm/\" xmlns:stEvt=\"http://ns.adobe.com/xap/1.0/sType/ResourceEvent#\" xmp:CreatorTool=\"Adobe Photoshop CC (Windows)\" xmp:CreateDate=\"2019-06-04T16:46:08+02:00\" xmp:ModifyDate=\"2019-06-04T17:32:54+02:00\" xmp:MetadataDate=\"2019-06-04T17:32:54+02:00\" dc:format=\"image/png\" photoshop:ColorMode=\"3\" photoshop:ICCProfile=\"sRGB IEC61966-2.1\" xmpMM:InstanceID=\"xmp.iid:65b3d116-9cf2-6840-bb1f-d198c1c93833\" xmpMM:DocumentID=\"adobe:docid:photoshop:1ce4432e-f100-6646-b53f-7597bec5246e\" xmpMM:OriginalDocumentID=\"xmp.did:5dbdc57c-49b9-864a-adc4-47d641b655f0\"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action=\"created\" stEvt:instanceID=\"xmp.iid:5dbdc57c-49b9-864a-adc4-47d641b655f0\" stEvt:when=\"2019-06-04T16:46:08+02:00\" stEvt:softwareAgent=\"Adobe Photoshop CC (Windows)\"/> <rdf:li stEvt:action=\"converted\" stEvt:parameters=\"from image/bmp to image/png\"/> <rdf:li stEvt:action=\"saved\" stEvt:instanceID=\"xmp.iid:65b3d116-9cf2-6840-bb1f-d198c1c93833\" stEvt:when=\"2019-06-04T17:32:54+02:00\" stEvt:softwareAgent=\"Adobe Photoshop CC (Windows)\" stEvt:changed=\"/\"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end=\"r\"?>\ufffd\ufffd\u0007\u0000\u0000\u0000\u0014IDAT\b\u001dc\\>\ufffd\ufffd\u0011\b\ufffd\n\ufffd\ufffdy\ufffd\u0000\u001cq\u0003=0\u0015\u001b\ufffd\u0000\u0000\u0000\u0000IEND\ufffdB\ufffd"
我似乎无法使用 PIL 或 numpy 库处理字符串以生成 Image 对象或 numpy 数组。任何想法如何处理这种情况?
解决方案
推荐阅读
- java - 计算大型数组的平均中位数(最多 100,000 个元素)
- java - 传输原始数据,例如 int、float-tuple:解析字符串或转换为字节数组更有效?
- java - 为什么“包日志”下划线为错误?
- javascript - 如果查询字符串中的字段为空节点并使用 Postgres 续集,如何获取所有数据
- java - 当用户单击取消时,如何使用 JOptionPane 从子菜单返回主菜单?
- python - 使用 pandas 制作表格时出错
- node.js - 使用 doc._id 和另一个参数查找单个文档
- html - 无法在 div 元素中容纳 iframe - HTML 和 CSS
- haskell - 确定代数数据结构的类型
- python - 如何在字符串中的子字符串周围添加括号?