我试图将一个UploadedFile转换成一个PIL Image对象,然后将我的缩略图函数返回的PIL Image对象转换成File对象.我该怎么做?

推荐答案

要做到这一点而不必写回文件系统,然后通过OPEN调用将文件带回内存,方法是使用StringIO和Django InMemoryUploadedFile.这里有一个关于如何做到这一点的快速示例.这里假设您已经有一个名为"Thumb"的缩略图:

import StringIO

from django.core.files.uploadedfile import InMemoryUploadedFile

# Create a file-like object to write thumb data (thumb data previously created
# using PIL, and stored in variable 'thumb')
thumb_io = StringIO.StringIO()
thumb.save(thumb_io, format='JPEG')

# Create a new Django file-like object to be used in models as ImageField using
# InMemoryUploadedFile.  If you look at the source in Django, a
# SimpleUploadedFile is essentially instantiated similarly to what is shown here
thumb_file = InMemoryUploadedFile(thumb_io, None, 'foo.jpg', 'image/jpeg',
                                  thumb_io.len, None)

# Once you have a Django file-like object, you may assign it to your ImageField
# and save.
...

如果你需要更多的澄清,请告诉我.我现在的项目中正在使用django存储上传到S3.这花了我一天的大部分时间才找到解决方案.

Django相关问答推荐

如何在Django中显示多个相关对象

django-filter compose 过滤的 url

Django Form标签和action属性

Django:如何 Select 没有其他项目引用的项目?

在 Django 中按月份和年份对帖子进行分类

无法使用 django-filters 进行过滤

如何查看 Django 调试工具栏?

删除所有实例后,Django 模型实例主键不会重置为 1

Django - 强制执行 ManyToManyField 唯一项

删除所有表的django命令是什么?

如何在 django 模板中将名称反转为绝对 url?

Ruby on Rails 会影响网页的外观吗?

在基于类的通用视图 CreateView 中访问 request.user 以便在 Django 中设置 FK 字段

在 django admin 中创建对象时如何自动插入当前用户?

django:TypeError:'tuple'对象不可调用

settings.DATABASES 配置不正确使用 django 1.4 执行 syncdb 时出错

在 Django 中测试different layers的最佳实践是什么?

从 django/python 中的 request.POST 检索列表项

如何在 Django/Python 中减go 两个日期?

ImportError:没有名为 django_filters 的模块