我正在尝试在 django 中上传个人资料图片并使用 PIL 在服务器端对其进行裁剪。我编写了一个简单的函数,它将文件和裁剪区域作为参数,裁剪图像并返回它。
我遇到的问题是返回的对象没有文件名,因此 django 不知道如何保存它。这是来自 django 错误页面的描述(AttributeError(name) 是调用的错误):
/Library/Python/2.6/site-packages/PIL/Image.py in __getattr__
# numpy array interface support
new = {}
shape, typestr = _conv_type_shape(self)
new['shape'] = shape
new['typestr'] = typestr
new['data'] = self.tostring()
return new
raise AttributeError(name) ...
##
# Returns a string containing pixel data.
#
# @param encoder_name What encoder to use. The default is to
# use the standard "raw" encoder.
▼ Local vars
Variable Value
self <PIL.Image.Image image mode=RGB size=300x300 at 0x101FCACF8>
name '_committed'
您可以看到图像文件对象没有附加名称,就像直接从 django 上传时一样。我搜索了整个 PIL 文档和 django 文档,但没有找到任何可以保存文件名称的内容(例如,image.save("filename.jpg", "JPEG") 不起作用)。我想将文件保存在内存中,如果可能的话,不必处理写入磁盘。
如有必要,我可以附加额外的代码,但我认为/希望我只是错过了一些简单的 Python 代码。我知道有一些库可以让我更轻松,但现在我只是想了解使用 Python/django 处理图像的基础知识。有任何想法吗?谢谢!