我意识到这是一个微不足道的任务,这个问题被回答了很多次,但我就是搞不懂。在将图像保存到磁盘之前,有没有办法调整和裁剪图像?我发现的所有解决方案都倾向于存储图像,调整大小,然后再次存储。我能做这个吗?在
# extending form's save() method
def save(self):
import Image as pil
# if avatar is uploaded, we need to scale it
if self.files['avatar']:
img = pil.open(self.files['avatar'])
img.thumbnail((150, 150), pil.ANTIALIAS)
# ???
# self.files['avatar'] is InMemoryUpladedFile
# how do I replace self.files['avatar'] with my new scaled image here?
# ???
super(UserForm, self).save()
我能弄明白。您只需将修改后的文件另存为
StringIO
,然后从中创建一个新的InMemoryUploadedFile
。以下是完整的解决方案:我不熟悉PIL,但正如我在docs中看到的,您可以将file对象作为“file”参数传递给“open”函数。在
Django
request.FILES
存储上载的文件对象-上载文件的简单包装器(存储在内存中或临时文件中),它支持读取、查找和告诉操作,因此可以直接传递给PIL“open”函数。在相关问题 更多 >
编程相关推荐