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 を使用した画像処理の基礎を理解しようとしています。何か案は?ありがとう!