2013-03-20 16 views
9

Djangoでは、アップロードされたイメージをディスクに保存する前に変更(サイズ変更)できますか?私は余分なアプリを使用せずにこれを行うことを好むだろう。アップロード中のDjangoサイズ変更イメージ

+3

(http://whathaveyoutried.com)ジョブの – arulmr

+0

使用PIL [あなたは試してみましたか?]:http://stackoverflow.com/questions/273946/how-do-i-resize-an -image-using-pil-and-maintain-its-aspect-ratio –

+0

djangoはあなたが探しているもののための事前定義されたメソッドを持っていないので、これを達成するために外部ライブラリまたはアプリケーションを使用する必要があります。 – Amyth

答えて

19

私は、ここにあるビットのみ、私は完全な作業例を見つけることができなかったことをイライラしました。私は自分で解決策をまとめることができました。ここでは完全な例を示します。私はそれをフォームのclean()メソッドに置きます(モデルsave()メソッドをオーバーライドすることもできます - ImageFieldのファイルプロパティを変更する)。

import StringIO 
from PIL import Image 

image_field = self.cleaned_data.get('image_field') 
image_file = StringIO.StringIO(image_field.read()) 
image = Image.open(image_file) 
w, h = image.size 

image = image.resize((w/2, h/2), Image.ANTIALIAS) 

image_file = StringIO.StringIO() 
image.save(image_file, 'JPEG', quality=90) 

image_field.file = image_file 
+0

この例をありがとうが、私はすべてを理解していない... "情報"とは何ですか?そうでなければ、Python 3.xではio.StringIO(...) – HydrUra

関連する問題