假设我们有一个非常简单的Post模型,它将是一个图像及其描述,
from django.db import models
class Post(models.Model):
text = models.TextField()
image = models.ImageField(upload_to='images/')
但是我们要优化图像大小,这将由我们Post的image字段指出。 这样做有充分的理由-它有助于更快地加载网站/应用程序并减少我们的服务器存储。 在使用Django之前,首先让我们简单介绍一下使用Pillow进行图像压缩的概述。
使用Pillow压缩图像
Pillow是用于图像相关操作的出色Python软件包。 Image类带有用于图像io和操作的方法。 Image.open从文件路径或文件对象读取图像。 Image类的save方法将质量作为以jpg格式保存图像的可选参数,范围为1到95,此参数的默认值为75,并且设置质量大于95会导致图像尺寸大于 原本的。
from PIL import Image
im = Image.open('/some/path/to/image')
im.save('/desired/path/new_image_name.jpg', quality=70)
im.close()
使用quality参数不是减小大小的唯一方法。 例如,您可以将其与调整图像大小相结合,以获得更小的图像尺寸。
利用Django signals
信号允许某些发送者通知一组接收者已经采取了某些措施。
Django带有许多内置信号,目前,我们对django.db.models.si