2013-03-20 21 views
9

Django'da, yüklenen görüntü diske kaydedilmeden önce değiştirilebilir (yeniden boyutlandırabilir)? Ekstra uygulamalar kullanmadan bunu yapmayı tercih ederim.Django, yükleme sırasında resmi yeniden boyutlandırır

+3

[size denedi Ne?] (Http://whathaveyoutried.com) bu iş için – arulmr

+0

Kullanım PIL: http://stackoverflow.com/questions/273946/how-do-i-resize-an -image-using-pil ve bakım-onun-en-boy-oran –

+0

django yapmak istediğiniz ne için önceden tanımlanmış yöntemleri olmadığı gibi bunu elde etmek için harici bir kütüphane veya uygulama kullanmanız gerekir. – Amyth

cevap

19

ben orada burada, sadece bitleri tam bir çalışma örneği bulamadık sinirlendi. Çözümü kendim bir araya getirmeyi başardım. İşte tam bir örnek, ben formun clean() yöntemine koydum (aynı zamanda tamamen SaveFire'nin dosya özelliğini değiştirerek) save() yöntemini de geçersiz kılabilirsiniz).

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

Bu örnek için teşekkürler, ancak her şeyi anlamıyorum ... "Bilgi" nedir? Aksi takdirde, python 3.x'te io.StringIO (...) – HydrUra

İlgili konular