我有一個稱爲圖片的模型。當圖像上傳到此模型中時,它將在保存前自動重新調整大小。Django在不同的模型字段中保存圖片
我的主要目標是要重新大小的上傳圖像分成2個獨立的圖像。所以我可以將它用於不同的目的,如小圖片和大圖片。所以我爲了達到這個目標所做的是創造另一個叫做small的領域。代表小圖片。
我有2個功能叫做下保存和小我的模型。這些功能會自動重新調整圖像的大小。
我的計劃是,當我上傳的圖像模型。我的保存功能會自動調整圖像大小並將其保存到圖像文件夾中,但我怎樣才能讓我的小功能從圖像字段中抓取圖像,以便調整大小並將其保存到我的小字段中。
總結大勢已去,它只是一個retrieveing上傳圖片並調整兩個領域的形象。
class Picture(models.Model):
user = models.ForeignKey(User)
small = models.ImageField(upload_to="small/",blank=True,null=True)
image = models.ImageField(upload_to="images/",blank=True)
def save(self , force_insert=False,force_update=False):
super (Picture,self).save(force_insert,force_update)
pw = self.image.width
ph = self.image.height
mw = 500
mh = 500
if (pw > mw) or (ph > mh):
filename = str(self.image.path)
imageObj = img.open(filename)
ratio = 1
if (pw > mw):
ratio = mw/float(pw)
pw = mw
ph = int(math.floor(float(ph)* ratio))
if (ph > mh):
ratio = ratio * (mh /float(ph))
ph = mh
pw = int(math.floor(float(ph)* ratio))
imageObj = imageObj.resize((pw,ph),img.ANTIALIAS)
imageObj.save(filename)
def save(self , force_insert=False,force_update=False):
super (Picture,self).save(force_insert,force_update)
pw = self.image.width
ph = self.image.height
mw = 300
mh = 300
if (pw > mw) or (ph > mh):
filename = str(self.image.path)
imageObj = img.open(filename)
ratio = 1
if (pw > mw):
ratio = mw/float(pw)
pw = mw
ph = int(math.floor(float(ph)* ratio))
if (ph > mh):
ratio = ratio * (mh /float(ph))
ph = mh
pw = int(math.floor(float(ph)* ratio))
imageObj = imageObj.resize((pw,ph),img.ANTIALIAS)
imageObj.save(filename)
如果這沒有任何意義,提醒我,讓我可以修改它
爲什麼不使用[SORL-縮略圖(http://sorl-thumbnail.readthedocs.org/en/latest/examples.html)呢? – Darwin 2013-04-24 18:31:02
@Darwin偉大的答案, – donkeyboy72 2013-05-01 07:25:53