1

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

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

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

现在我被困在试图用这个解码的数据做一些事情,所以我可以把它保存在模型的 ImageField 中。

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

4

2 回答 2

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 中的模型。

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

于 2013-08-05T14:43:43.257 回答
0

我很确定你需要PIL

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

剩下的将是 Django 的工作,对吧?

于 2013-08-05T14:39:50.383 回答