试图在Django管理员中保存已调整大小的图像

时间:2013-10-15 02:27:15

标签: python database django

我希望在写入磁盘之前在Django管理员中上传图像,调整大小并使用数据库中的注册表。

我正在使用Python Imaging Library(PIL)

我正在尝试这个:

from PIL import Image

class Categorias(models.Model):
image_height = models.PositiveIntegerField(editable=False,null=True)
image_width = models.PositiveIntegerField(editable=False,null=True)
the_image = models.ImageField(upload_to="uploads/image/category",width_field="image_width",height_field="image_height")

def save(self):
    if not self.id and not self.the_image:
        return;

    image = Image.open(self.the_image)
    ratio_height = (890*self.image_height)/self.image_width     
    size = (890,ratio_height)
    image = image.resize(size, Image.ANTIALIAS)
    image.save(self.the_image.path)     
    super(Categorias, self).save()

但这是将原始图像和已调整大小的图像保存到磁盘,但调整大小的图像在数据库上没有注册表,只有原始图像。 我想要的只是在数据库中使用注册表调整大小的图像。

所以我看了这篇文章: Save image created via PIL to django model

我试着这个但没有成功:

def save(self):
    if not self.id and not self.the_image:
        return;

    image = Image.open(self.the_image)
    ratio_height = (890*self.image_height)/self.image_width     
    size = (890,ratio_height)
    tempfile  = image.resize(size, Image.ANTIALIAS)
    tempfile_io =StringIO.StringIO()
    tempfile.save(tempfile_io, format='JPEG')
    image_file = InMemoryUploadedFile(tempfile_io, None, "image.jpg",'image/jpeg',tempfile_io.len, None)
    self.the_image = image.save(self.the_image.path,image_file)
    super(Categorias, self).save()

我得到错误:

TypeError at /admin/imagens/categorias/add/
__init__() takes exactly 8 arguments (7 given)

我试图在没有成功的情况下解决这个问题

完整错误:http://pastebin.com/jxia5wPp

当我点击管理页面上的保存时,会出现错误。

0 个答案:

没有答案