gpt4 book ai didi

Python Flask ajax将解码后的base64图像临时保存到服务器

转载 作者:行者123 更新时间:2023-12-01 03:10:48 25 4
gpt4 key购买 nike

在将图像发送到我的 flask 应用程序之前,我正在调整客户端图像的大小。

调整大小的图像被绘制到要调整大小的 Canvas 中,通过 POST 请求发送。

在我的应用程序中,图像通过 base64 进行解码:

def resize_image(item):
content = item.split(';')[1]
image_encoded = content.split(',')[1]
body = base64.decodestring(image_encoded.encode('utf-8'))
return body

图像数据以字符串类型存储在body变量中。我可以将数据保存到本地计算机并且它可以工作:

filename = 'some_image.jpg' 
with open(filename, 'wb') as f:
print "written"
f.write(body)

我需要的是将调整大小的图像上传到AWS3。在某一点上,我需要 read() 图像内容,但在图像作为文件保存在某处之前,它仍然是一个字符串,因此失败:

file_data = request.values['a']
imagedata = resize_image(file_data)

s3 = boto.connect_s3(app.config['MY_AWS_ID'], app.config['MY_AWS_SECRET'], host='s3.eu-central-1.amazonaws.com')

bucket_name = 'my_bucket'
bucket = s3.get_bucket(bucket_name)
k = Key(bucket)

# fails here
file_contents = imagedata.read()

k.key = "my_images/" + "test.png"

k.set_contents_from_string(file_contents)

除非有其他解决方案,我想我将图像暂时保存到我的服务器(Heroku)并上传然后删除它,这将如何工作?事后删除在这里很重要!

最佳答案

set_contents_from_string 采用字符串作为参数,您可能只需将图像字符串数据直接传递给它即可上传到 S3

解决方案:

删除这部分:

file_contents = imagedata.read()

直接在此处使用imagedata:

k.set_contents_from_string(imagedata)

关于Python Flask ajax将解码后的base64图像临时保存到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42900790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com