我将一个原始数据数组(RGBA8888)从一个应用程序(用C ++)发送到一个django服务器,在http的post数据中用base64编码,如:
field1=value1&prof_img=KSsf134SF38u483y... more bytes ....sdknADdSIU7rb==
我已经设法将它从base64解码回原始数据,我已经做了一些测试并且数据被正确转换。
现在我不得不尝试用这个解码数据做一些事情,所以我可以将它保存在模型的ImageField中。
如何将图像保存回.png文件或任何其他图像文件格式? (我不需要alpha /透明度)
答案 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的工作,对吗?