如何转换图像数据,使其可以JSON序列化,反之亦然

时间:2017-07-17 04:14:55

标签: python django

如何使图像数据JSON可序列化,然后将其转换回来,以便将其保存为图像。

我收到错误:<InMemoryUploadedFile: image.jpg (image/jpeg)> is not JSON serializable

def imageFileView(request):

    form = ImageFileForm(request.POST or None, request.FILES or None)
    if request.method == 'POST':
        if form.is_valid:
            image = request.FILES.get('image')
            image_file = request.session['image_file'] = image 
            return redirect('picxs:create')

def imageView(request):

    img_file = request.session.get('image_file')
    img_temp = NamedTemporaryFile('w')
    img_temp.write(img_file)
    img_temp.flush()

    form = SaveImageForm(request.POST or None, request.FILES or None)
    if request.post == 'POST':
       if form.is_valid:
           instance = form.save(commit=False)
           instance.image.save(img_filename, File(img_temp), save = True)

2 个答案:

答案 0 :(得分:1)

Error in mutate_impl(.data, dots) : 
  Evaluation error: argument "y" is missing, with no default.

这应该适用于将图像存储在内存中

或使用img_file = request.session.get('image_file') json.dumps(str(my_imagefield))

base64

答案 1 :(得分:0)

您有几个选项,您使用的选项会因您的使用情况而异。

您可以获取图像的原始字节并返回序列化的字节数组数组。

您可以获取图像的原始字节并将字节转换为十六进制并返回十六进制字符串。

或者您可以获取图像的原始字节并将字节转换为base64字符串并返回base64字符串。

作为旁注,InMemoryUploadedFile是获取您需要使用的实际文件的包装.file