django的ImageField来自后期原始数据

时间:2013-08-05 14:30:43

标签: python django http python-2.7

我将一个原始数据数组(RGBA8888)从一个应用程序(用C ++)发送到一个django服务器,在http的post数据中用base64编码,如:

field1=value1&prof_img=KSsf134SF38u483y... more bytes ....sdknADdSIU7rb== 

我已经设法将它从base64解码回原始数据,我已经做了一些测试并且数据被正确转换。

现在我不得不尝试用这个解码数据做一些事情,所以我可以将它保存在模型的ImageField中。

如何将图像保存回.png文件或任何其他图像文件格式? (我不需要alpha /透明度)

2 个答案:

答案 0 :(得分:1)

您只需要将解码后的base64字符串中包含的字节流保存到磁盘即可。我只是通过以下方式让它工作:

import base64

# assume 'x' is the variable where you have the base64 encoded image
# 'target.png' is the file name where you'll be saving it
# 'wb' is for a raw binary write operation
fout = open('target.png','wb')
# decode it and write it
fout.write(base64.b64decode(x))
# flush it
fout.flush()

将其写入磁盘后,只需使用文件路径将实例添加/编辑到django中的模型。

这对我有用,希望它有所帮助!

答案 1 :(得分:0)

我很确定你需要PIL

from PIL import Image
img_size = (500, 500)
img = Image.frombytes('RGB', img_size, raw_data)
img.save('mypic.png')

其余的将是Django的工作,对吗?