Django(71)图片处理器django-imagekit
介绍
ImageKit
是用于处理图像的Django
应用程序。如果需要从原图上生成一个长宽为50x50的图像,则需要ImageKit
。
ImageKit
附带了一系列图像处理器,用于调整大小和裁剪等常见任务。
安装
在安装ImageKit
之前,我们需要先安装Pillow
,因为ImageKit
是基于Pillow
和Django
做的封装的第三方库
pip install pillow
然后安装django-imagekit
pip install django-imagekit
完成上述步骤后,在 Django
项目的 settings.py
文件中的 INSTALLED_APPS
添加上: 'imagekit'
。
使用方法
ImageSpecField
使用定义图像规范的最简单方法是在模型类上使用 ImageSpecField
:
from django.db import models
from imagekit.models import ImageSpecField
from imagekit.processors import ResizeToFill
# 用来保存上传图片相关信息的模型
class (models.Model):
name = models.CharField(max_length = 50)
# 原图
avatar = models.ImageField(upload_to = 'test_pictures')
# 注意:ImageSpecField不会生成数据库中的表
# 处理后的图片
avatar_thumbnail = ImageSpecField(
source="avatar",
processors=[ResizeToFill(100, 50)], # 处理后的图像大小, 宽×高=100×50
format='JPEG', # 处理后的图片格式
options={'quality': 100} # 处理后的图片质量
)
profile = Profile.objects.all()[0]
print profile.avatar_thumbnail.url # > /media/CACHE/images/982d5af84cddddfd0fbf70892b4431e4.jpg
print profile.avatar_thumbnail.width # > 100
ImageSpecFields
的工作方式与Django
的ImageFields
非常相似。区别在于,它们是由ImageKit
根据您给出的说明自动生成的。在上面的示例中,avatar_thumbnail
是avatar
的大小调整版本,保存为质量为100的JPEG格式。
ProcessedImageField
如果您不需要保留原始图像(上例中的image);当用户上传图像时,您只需要对其进行处理并保存结果。在这些情况下,您可以使用ProcessedImageField
类:
from django.db import models
from imagekit.processors import ResizeToFill
from imagekit.models import ProcessedImageField
class (models.Model):
avatar_thumbnail = ImageSpecField(
source="avatar",
processors=[ResizeToFill(100, 50)],
format='JPEG',
options={'quality': 100}
)
profile = Profile.objects.all()[0]
print profile.avatar_thumbnail.url # > /media/avatars/MY-avatar.jpg
print profile.avatar_thumbnail.width # > 100