在写入磁盘之前,我想在 Django 管理员中上传一个图像,调整大小并在数据库上使用注册表。
我正在使用 Python 图像库 (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
当我单击管理页面上的保存时,错误出现。