首页 > 解决方案 > blob.download_as_string() 返回什么编码?

问题描述

我正在从 Google Storage 下载一个文件作为字节字符串,b64 对其进行编码,并将其用作 Google Vision API 的输入。

storage_client = storage.Client(project=[PROJECT])
bucket = storage_client.get_bucket([BUCKET])
blob = bucket.blob([KEY])

content = blob.download_as_string()
b64content = base64.b64encode(content)

client = vision.ImageAnnotatorClient()
image = vision.types.Image(content=b64content)

我在使用 b64content 时遇到了错误的图像错误。但是,如果我使用非 base64 内容,我对 Vision API 的调用会成功:

image = vision.types.Image(content=content)

blob.download_as_string() 是否返回已经经过 base64 编码的字节字符串?

标签: python-2.7encodinggoogle-cloud-platformgoogle-cloud-storagegoogle-cloud-vision

解决方案


简短回答:不,它不是 base64 编码的。那为什么它与非编码字符串一起工作?

像您一样使用 Python 客户端,您不需要对字符串进行编码,如此处所示。如果您以 JSON 格式发布 Vision API 请求,则需要对其进行编码,例如这个。这就是为什么你在没有base64.b64encode().


推荐阅读