How do you convert a PIL `Image` to a Django `File`?

前端 未结 7 1366
無奈伤痛
無奈伤痛 2020-11-27 11:58

I\'m trying to convert an UploadedFile to a PIL Image object to thumbnail it, and then convert the PIL Image object that my thumbnail

7条回答
  •  情歌与酒
    2020-11-27 12:21

    This is actual working example for python 3.5 and django 1.10

    in views.py:

    from io import BytesIO
    from django.core.files.base import ContentFile
    from django.core.files.uploadedfile import InMemoryUploadedFile
    
    def pill(image_io):
        im = Image.open(image_io)
        ltrb_border = (0, 0, 0, 10)
        im_with_border = ImageOps.expand(im, border=ltrb_border, fill='white')
    
        buffer = BytesIO()
        im_with_border.save(fp=buffer, format='JPEG')
        buff_val = buffer.getvalue()
        return ContentFile(buff_val)
    
    def save_img(request)
        if request.POST:
           new_record = AddNewRecordForm(request.POST, request.FILES)
           pillow_image = pill(request.FILES['image'])
           image_file = InMemoryUploadedFile(pillow_image, None, 'foo.jpg', 'image/jpeg', pillow_image.tell, None)
           request.FILES['image'] = image_file  # really need rewrite img in POST for success form validation
           new_record.image = request.FILES['image']
           new_record.save()
           return redirect(...)
    

提交回复
热议问题