7

我需要为管理员提供上传图像以ImageField使用 AJAX 的功能,然后裁剪他选择的部分(使用预定义的尺寸比或分辨率),然后将裁剪后的图像保存在数据库中。

我试过django-image-croppingdjango-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图像分两步:首先我们需要上传图像,将其保存到数据库,然后我们需要再次打开对象并选择裁剪部分,然后将其再次保存到数据库中,我觉得这不必要地麻烦。有什么建议么?

4

3 回答 3

1

看起来您需要在浏览器中使用 JS 库来进行实际裁剪。然后您可以使用 AJAX 将其发送到服务器。

DarkroomJS可能正是您所需要的。它使用 HTML5 画布在浏览器中进行图像编辑。它实际上具有比您需要的更多功能,但它应该可以完成工作。

于 2015-04-09T19:51:48.017 回答
0

django-client-side-image-cropping库在客户端(使用 Croppie Javascript 库)将图像裁剪为特定大小。它与 django-admin 站点兼容。它不使用 AJAX。它用于InMemoryUploadedFile临时存储原始文件。

于 2020-08-26T14:34:22.387 回答
-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)
于 2021-06-20T09:55:32.793 回答