1

我正在使用 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()

但是数据 url 真的很长(只要浏览器拒绝导航到它),并且 glass 不想从其源加载图像。有没有办法在 Python 中对数据 url 进行编码,以便我可以将其作为媒体附件插入?

4

1 回答 1

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()
于 2013-10-08T19:53:28.057 回答