Python Google Glass Tile从dataURL插入图像
我正在使用Django用Python编写我的玻璃器皿应用程序,我有一个dataURL,我想将它作为图像插入到玻璃瓷砖中。我尝试将URL本身作为图像插入:Python Google Glass Tile从dataURL插入图像,python,django,google-mirror-api,Python,Django,Google Mirror Api,我正在使用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), "speakab
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()
dataURL=canvas\u file.value()//只是从Django表单中提取dataURL的值
瓷砖={
“html:”。格式(数据URL),
“speakableType”:“说明”,
“speakableText”:消息,
“菜单项”:[{“动作”:“大声朗读”},],
“通知”:{
“级别”:“默认”
}
}
service.timeline().insert(body=tile.execute())
但是数据url非常长(如此之长以至于浏览器拒绝导航到它),glass不想从其源加载图像。有没有办法用Python对数据url进行编码,以便将其作为媒体附件插入?数据URI本质上是base64编码的图像 例如,在此图像中:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />
一旦您有了这个功能,将数据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()
你能使用像“g00.gl”这样的url缩短器吗?替换(“0”,“o”)?图像有多大?如果可能,您应该尝试将图像大小调整为640 x 360像素,这样可以减小数据URN的大小。
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()