我正在使用Django在Python中编写我的玻璃器皿应用程序,并且我有一个dataURL,我想将其作为图像插入到玻璃图块中。我尝试将URL本身作为图像插入:
dataURL = canvas_file.value() //Just extracting the value of the dataURL from a Django form
tile = {
"html": "<img src={0}>".format(dataURL),
"speakableType":"Description.",
"speakableText":message,
"menuItems": [ { "action":"READ_ALOUD"}, ],
"notification": {
"level": "DEFAULT"
}
}
service.timeline().insert(body=tile).execute()
但是数据网址真的很长(浏览器拒绝导航到它的时间太长),并且glass不想从其源加载图像。有没有办法在Python中编码数据网址,以便我可以将其作为媒体附件插入?
答案 0 :(得分:0)
数据URI本质上是base64编码的图像。
例如,在此图片中:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />
这是图像的base64数据:
iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==
有了这个,将数据URI的base64部分转换回二进制文件以作为附件进行流式传输非常简单:
import base64
import io
from apiclient import errors
from apiclient.http import MediaIoBaseUpload
...
timeline_item = {'text': 'Hello world'}
media_body = MediaIoBaseUpload(io.BytesIO(base64.b64decode('iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==')), mimetype="image/png", resumable=True)
service.timeline().insert(body=timeline_item, media_body=media_body).execute()