我有一个名为 Picture 的模型。当图像上传到这个模型中时,它会在保存前自动调整大小。
我的主要目标是将上传的图像重新调整为 2 个单独的图像。所以我可以将它用于不同的目的,比如小图片和大图片。所以我为实现这个目标所做的是创建另一个名为 small 的字段。代表小图片。
我的模型下面有 2 个函数,称为 save 和 small 。这些功能将自动重新调整图像大小。
我的计划是,当我将图像上传到模型时。我的保存功能将自动调整图像大小并将其保存到图像文件夹中,但我怎样才能让我的小功能从图像字段中获取该图像,以便它可以调整它的大小并将其保存到我的小字段中。
总而言之,它只是检索上传图像并在两个字段上调整图像大小。
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)
如果这没有意义,请提醒我,以便我修改它