我有以下带有覆盖保存方法的Django模型:
class Photo(models.Model):
image = models.ImageField(upload_to=get_file_path, blank=False, null=False)
def save(self, *args, **kwargs):
"""
Override save method to resize uploaded photo images to max_size.
"""
if not self.id and not self.image:
return
super(Photo, self).save(*args, **kwargs)
resized_image = Image.open(self.image)
resized_image = resized_image.resize(settings.PHOTO_CONFIG['max_size'], Image.ANTIALIAS)
resized_image.save(self.image.path)
以及settings.py中的以下配置:
PHOTO_CONFIG = {
'max_size': (900, 900),
}
现在,当我上传完全900x900大小(500 kb)的JPG时,上传的一个压缩到大约100kb。两者都是900x900和72 dpi分辨率。
这是如何以及为何发生的?
答案 0 :(得分:1)
可能有几个原因,但简而言之,可能是因为默认的保存参数不是用于创建原始图像的参数。
值得注意的是:
请参阅the complete list of options of the save method for JPEG file及其默认值,您应该知道哪种情况与您的情况不同。