Django图片裁剪上传,可与Admin、ModelForm完美搭配使用
在Django中实现图片裁剪上传,可以使用django-imagekit
库。以下是一个简单的例子,展示如何使用ImageSpecField
来实现图片的裁剪上传功能。
首先,安装django-imagekit
库:
pip install django-imagekit
然后,在你的models.py
中使用ImageSpecField
:
from django.db import models
from imagekit.models import ImageSpecField
from imagekit.processors import ResizeToFill
class MyModel(models.Model):
original_image = models.ImageField(upload_to='original_images/')
thumbnail = ImageSpecField(source='original_image',
processors=[ResizeToFill(100, 50)],
format='JPEG',
options={'quality': 60})
在这个例子中,original_image
是原始图片字段,而thumbnail
是裁剪后的图片。ImageSpecField
会使用ResizeToFill
处理器将原始图片裁剪为100x50像素的缩略图,并且设置JPEG格式和质量为60。
在admin.py
中注册你的模型,这样就可以在Admin后台进行图片上传和裁剪操作:
from django.contrib import admin
from .models import MyModel
admin.site.register(MyModel)
在forms.py
中,你也可以使用ModelForm
来包装你的模型:
from django import forms
from .models import MyModel
class MyModelForm(forms.ModelForm):
class Meta:
model = MyModel
fields = ['original_image']
现在,你可以在Admin界面上传原始图片,并且django-imagekit
会自动为你生成100x50像素的缩略图。
评论已关闭