我正在尝试在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来理解图像处理的基础知识。有任何想法吗?谢谢!