'Image' 对象没有属性 '_committed'

Rav*_*ven 3 python django python-imaging-library

我正在尝试将图片调整为 124*124 大小。我搜索了很多并找到了一些相关问题的解决方案。但是即使我的问题也没有解决。

我的模型

class MyUsers(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, 
    related_name='user')
    image = models.FileField(upload_to='static/photo', blank=True)
    name = models.CharFiled(max_length=150)

    def __str__(self):
        return self.name
Run Code Online (Sandbox Code Playgroud)

我的看法

def change_user_photo(request, id):
    if request.method == "POST":
        new_pic = request.FILES['new']
        if new_image:
            my_user = MyUser.objects.get(id=id)
            image = Image.open(new_pic)
            image = image.resize((124,124), Image.ANTIALIAS)
            my_user.image = image
            my_user.save()
         return HttpResponseRedirect(reverse('my_profile'))        
    else:
        user = get_photo(id)
        return render(request, "photo/edit.html", 
          {"users":user})
Run Code Online (Sandbox Code Playgroud)

我的模板:

 <form method="POST" enctype="multipart/form-data" id="formUpload">
     {% csrf_token %}
     <div class="form-group">
         <label>New Photo:</label>
         <input type="file" name="new"/>
     </div>
     <hr/>
     <div class="form-group">
         <button type="submit" class="btn btn-sm btn- 
            success">Update</button>
     </div>
  </form> 
Run Code Online (Sandbox Code Playgroud)

小智 7

image = models.FileField() 仅接受 Fileupload 对象,并且您正在传递 image 对象。

def image_resize(self, field):

    if field:
        image = Img.open(field)
        image = image.convert('RGB')
        image = image.resize((800, 800), Img.ANTIALIAS)
        output = io.BytesIO()
        image.save(output, format='JPEG', quality=85)
        output.seek(0)
        return InMemoryUploadedFile(output, 'ImageField',
                                    field.name,
                                    'image/jpeg',
                                    sys.getsizeof(output), None)
    else:
        return None
Run Code Online (Sandbox Code Playgroud)

InMemoryUploadedFile 在 django.core.files.uploadedfile 中可用。转换 fileupload 对象中的图像