将枕头图像转换为Django Imagefield

时间:2020-04-29 13:30:06

标签: django django-models

我有一个图像域,称为缩略图,另一个图像域为thumbnail_low,它是缩略图的320 * 200版本。 当用户从缩略图图像字段上传图像时,我会在内部创建分配给thumbnail_low的320 * 200版本。我就是这样做的(请参见下面的代码)。问题是该图像已正确分配给thumbnail_low,除了浏览器指示等待本地主机,直到我的机器崩溃为止,这很奇怪,因为重新启动后我发现该帖子已正确创建。

class Post(models.Model):

thumbnail = models.ImageField(upload_to=post_directory_path)
thumbnail_low = models.ImageField(upload_to=post_directory_path, null=True, blank=True)


def save(self, force_insert=False, force_update=False, using=None,
         update_fields=None):
    obj = super(Post, self).save(force_insert, force_update, using, update_fields)

    if self.thumbnail:
        img = Image.open(self.thumbnail.path)
        img = img.convert("RGB") 
        img.save(self.thumbnail.path, format="JPEG", optimized=True)

        stream = BytesIO()
        copy = img.copy()
        copy.thumbnail((320, 200), Image.ANTIALIAS)
        copy.save(fp=stream, format="JPEG")
        thumbnail_name = "low" + get_random_string(length=4) + str(self.id) + ".jpeg"
        content = stream.getvalue()
        stream.close()
        self.thumbnail_low.save(thumbnail_name, ContentFile(content))

    return obj

0 个答案:

没有答案