我通過tutorial如何擡起負荷影像工作我的方式生成用戶提交的圖像的縮略圖,我在對方法這傢伙用它來生成縮略圖完全喪失提交照片通過遞歸調用模型
這裏是他的代碼下調大塊:
import os.path
from PIL import Image as PImage
from settings import MEDIA_ROOT
from tempfile import *
class Image(models.Model):
image = models.FileField(upload_to="images/")
thumbnail = models.ImageField(upload_to="images/", blank=True, null=True)
def save(self, *args, **kwargs):
super(Image, self).save(*args, **kwargs)
im = PImage.open(pjoin(MEDIA_ROOT, self.image.name))
fn, ext = os.path.splitext(self.image.name)
im.thumbnail((128,128), PImage.ANTIALIAS)
thumb_fn = fn + "-thumb" + ext
tf = NamedTemporaryFile()
im.save(tf.name, "JPEG")
self.thumbnail.save(thumb_fn, File(open(tf.name)), save=False)
tf.close()
super(Image, self).save(*args, ** kwargs)
所以我對這個具體的問題是:
- 他爲圖像和ImageField使用FileField作爲縮略圖的任何原因?
- 據我所知,
super(Image, self).save(*args, **kwargs)
保存模型。但爲什麼他最後再打電話呢? - 然後,我真的不明白的角色扮演
NamedTemporaryFile()
,什麼時候self.thumbnail.save(thumb_fn, File(open(tf.name)), save=False)
叫
確定冷靜,感謝羚牛的時間來解釋 – Ben