将通过PIL创建的图像保存到django模型

dja*_*o-d 12 python django django-models python-imaging-library

我已使用以下代码成功创建并旋转了通过电子邮件上传到我服务器上的目录的图像:

      image = ContentFile(b64decode(part.get_payload()))
      im = Image.open(image)
      tempfile = im.rotate(90)
      tempfile.save("/srv/www/mysite.com/public_html/media/images/rotate.jpg", "JPEG")
      img = Photo(user=user)
      img.img.save('rotate.jpg', tempfile)
      img.save()
Run Code Online (Sandbox Code Playgroud)

旋转的图像存在于目录中,但是当我尝试将该图像添加到我的模型时,它不会保存.我错过了什么?任何帮助将不胜感激.

dja*_*o-d 16

我用以下代码解决了这个问题:

       image = ContentFile(b64decode(part.get_payload()))
       im = Image.open(image)
       tempfile = im.rotate(270)
       tempfile_io =StringIO.StringIO()
       tempfile.save(tempfile_io, format='JPEG')
       image_file = InMemoryUploadedFile(tempfile_io, None, 'rotate.jpg','image/jpeg',tempfile_io.len, None)
       img = Photo(user=user)
       img.img.save('rotate.jpg', image_file)
       img.save()
Run Code Online (Sandbox Code Playgroud)

我在这里找到了答案你如何将PIL`Image`转换为Django`File`?.完美无瑕!!!

  • 您能否输入您的导入内容,以便我们知道您在哪里获取了所有必需的类,在此先感谢! (3认同)
  • 注意:来自 python3 更新日志:StringIO 和 cStringIO 模块消失了。相反,导入 io 模块并分别将 io.StringIO 或 io.BytesIO 用于文本和数据。 (2认同)