将解码图像保存到Djang模型时出错

2024-09-28 22:09:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个base-64字符串,我把它发送到routesviews.py,然后用代码把它解码回来

image_data = request.POST.get('image_data')
pattern = r'^data:(?P<mime_type>[^;]+);base64,(?P<image>.+)$'
result = re.match(pattern, image_data)
if result:
    mime_type = result.group('mime_type')
    image = result.group('image').decode('base64')
    saveImage = uploadImage(image=image, imageMime=mime_type)
    saveImage.save()

一旦解码,我需要保存到项目中的文件夹,而不是本地。但是,当我调用.save()时,我得到一个编码错误:DjangoUnicodeDecodeError: 'utf8' codec can't decode byte 0x89 in position 0: invalid start byte. You passed in '\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x。你知道吗

我需要剥离的PNG部分,这个工作?你知道吗

我的模型如下:

class uploadImage(models.Model):
    image = models.ImageField(upload_to='Gallery')
    imageMime = models.CharField(max_length=50)

Tags: imagedatamodelstypegroupresult解码pattern
1条回答
网友
1楼 · 发布于 2024-09-28 22:09:29

您正在将ImageField设置为bytestring;它需要一个stream对象(或一个文件的路径,IIRC)。尝试用BytesIO包装,例如

saveImage = uploadImage(image=BytesIO(image), imageMime=mime_type)

你需要from io import BytesIO在你的视图.py. 你知道吗

相关问题 更多 >