Django(71)圖片處理器django-imagekit
介紹
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 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