我需要为管理员提供使用AJAX上传ImageField
图像的功能,然后裁剪他选择的部分(使用预定义的尺寸比率或分辨率),然后将裁剪后的图像保存到数据库中。
我为此尝试了django-image-cropping
和django-ajaximage
。
#Using django-image-cropping
from image_cropping import ImageRatioField
class Alumnus(models.Model):
photo = models.ImageField(null=True, blank=True)
cropped_photo = ImageRatioField('photo', '430x360')
#Using django-ajaximage
from ajaximage.fields import AjaxImageField
class Alumnus(models.Model):
photo = AjaxImageField(
upload_to='alumni_photos',
max_height=400,
max_width=400,
crop=True
)
虽然django-ajaximage
使用AJAX上传图片,但它不允许管理员选择要裁剪的图像部分,django-image-cropping
分两步裁剪图像:首先我们需要上传一个图像,将其保存到数据库中,然后再次我们需要打开该对象并选择裁剪部分,然后将其再次保存到数据库中,我觉得这是不必要的麻烦。有什么建议吗?
答案 0 :(得分:1)
看起来你需要在浏览器中使用JS库进行实际裁剪。然后,您可以使用AJAX将其发送到服务器。
DarkroomJS可能正是您所需要的。它使用HTML5画布在浏览器中进行图像编辑。它实际上提供了比你需要的更多的功能,但它应该完成工作。
答案 1 :(得分:0)
django-client-side-image-cropping库在客户端(使用Croppie Javascript库)将图像裁剪为特定大小。它与django-admin网站兼容。它不使用AJAX。它使用InMemoryUploadedFile
临时存储原始文件。
答案 2 :(得分:-1)
django-cropper-image 是我为客户端裁剪和压缩上传的图像而制作的应用程序,通过 Django 的应用程序使用帮助cropper.js。 github 链接 django-cropper-image。
from django.db import models
from django_cropper_image.fields import ImageCropperField
class Images(models.Model):
image = ImageCropperField(upload_to='image',max_length=255)