#介绍
ImageKit
是用于处理图像的
Django
应用程序。如果需要从原图上生成一个长宽为50×50的图像,则需要
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 modelsfrom imagekit.models import ImageSpecFieldfrom 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×50format=\'JPEG\', # 处理后的图片格式options={\'quality\': 100} # 处理后的图片质量)profile = Profile.objects.all()[0]print profile.avatar_thumbnail.url # > /media/CACHE/images/982d5af84cddddfd0fbf70892b4431e4.jpgprint profile.avatar_thumbnail.width # > 100
ImageSpecFields
的工作方式与
Django
的
ImageFields
非常相似。区别在于,它们是由
ImageKit
根据您给出的说明自动生成的。在上面的示例中,
avatar_thumbnail
是
avatar
的大小调整版本,保存为质量为100的JPEG格式。
ProcessedImageField
如果您不需要保留原始图像(上例中的image);当用户上传图像时,您只需要对其进行处理并保存结果。在这些情况下,您可以使用
ProcessedImageField
类:
from django.db import modelsfrom imagekit.processors import ResizeToFillfrom imagekit.models import ProcessedImageFieldclass (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.jpgprint profile.avatar_thumbnail.width # > 100