Django(71)圖片處理器django-imagekit

介紹

ImageKit是用於處理影像的Django應用程式。如果需要從原圖上生成一個長寬為50×50的影像,則需要ImageKit

ImageKit附帶了一系列影像處理器,用於調整大小和裁剪等常見任務。
 

安裝

在安裝ImageKit之前,我們需要先安裝Pillow,因為ImageKit是基於PillowDjango做的封裝的第三方庫

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的工作方式與DjangoImageFields非常相似。區別在於,它們是由ImageKit根據您給出的說明自動生成的。在上面的示例中,avatar_thumbnailavatar 的大小調整版本,保存為品質為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

 

Tags: