【发布时间】:2018-01-22 22:46:48
【问题描述】:
感谢任何可以提供帮助的人,这是我的第一个问题,所以希望它不是很明显。
我有一个作为 base64 字符串传递的图像(使用苗条图像裁剪器)。我想将其转换为文件,然后将其作为 blob 发送到 Google 存储。
以前我只是像下面这样发送文件
image = request.files.get('image')
client = _get_storage_client()
bucket = client.bucket(current_app.config['CLOUD_STORAGE_BUCKET'])
blob = bucket.blob(filename)
blob.upload_from_string(
image.read(),
content_type=content_type)
现在我正在处理下面的代码。
cropped_image = json.loads(request.form.get('slim[]'))
data = cropped_image['output']['image']
数据变量是一个字符串:
data = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBD...'
我不确定是否需要编码为 base64,从 base64 解码,将其转换为字节串,然后编码/解码??
我尝试过使用 bytesIO 和 StringIO 原样发送它
image = BytesIO(data)
blob.upload_from_string(
image.read(),
content_type=content_type)
我上传了一张黑色图片,真的尽量不要在没有先研究的情况下提问,但这张让我很难过。
谢谢。
【问题讨论】:
-
upload_from_string的参数在第二种情况下与第一种情况相同。您从data创建的变量image不会在对upload_from_string的调用中使用。对吗? -
在第一个示例中,我正在传递从 Web 表单上传的文件存储。
-
我已尝试将数据变量发送到upload_from_string 并获得与使用bytesIO 或StringIO 相同的结果。
标签: python json flask base64 gcp