Django图片裁剪上传,可与Admin、ModelForm完美搭配使用
warning:
这篇文章距离上次修改已过427天,其中的内容可能已经有所变动。
在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像素的缩略图。
评论已关闭