Django ImageField的小部件,它提供了一个将图像客户端裁剪为特定大小的接口。

django-client-side-image-cropping的Python项目详细描述


django客户端图像裁剪

Django ImageField的小部件,它提供了一个接口,用于将图像客户端(使用CroppieJavascript库)裁剪到特定大小。兼容任何Django表单,包括Django管理站点。在

此小部件与django-image-cropping不同,因为它在浏览器中而不是在服务器上执行裁剪操作。在

  • 如果要在服务器上保存原始图像的副本,请使用django-image-cropping。在
  • 如果不需要原始图像,请使用django客户端图像裁剪(此小部件)。它将为您节省存储空间和带宽。在

安装和设置

使用pip安装django客户端图像裁剪(DCSIC):

pip install django-client-side-image-cropping

确保'django.contrib.staticfiles'set up properly,并将'client_side_image_cropping'添加到INSTALLED_APPS设置中:

^{pr2}$

包括静态JS和CSS文件

DCSIC需要一些Javascript和CSS文件才能正常工作。如果您在django管理站点中使用小部件,那么可以使用第一种方法来包含这些文件。对于所有其他站点,您应该阅读下面的“通用表单”部分。在

对于管理站点

让您的管理类从DcsicAdminMixin继承,这将指示管理接口包括必要的文件:

from client_side_image_cropping import DcsicAdminMixin

class EbookAdmin(admin.ModelAdmin, DcsicAdminMixin):
    form = EbookForm

对于一般形式

包含使用ClientsideCroppingWidget的表单的每个页面都应该在head部分中包含jQuery1.9(或更高版本)和两个JS和CSS文件:

{% load static %}

<head>
    <link rel="stylesheet" href="{% static "client_side_image_cropping/cropping.css" %}"></script>
    <link rel="stylesheet" href="{% static "client_side_image_cropping/cropping_widget.css" %}"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script src="{% static "client_side_image_cropping/croppie.min.js" %}"></script>
    <script src="{% static "client_side_image_cropping/cropping_widget.js" %}"></script>
</head>

使用

ClientsideCroppingWidget用于以下形式中的任何django.forms.ImageField

from client_side_image_cropping import ClientsideCroppingWidget

class EbookForm(forms.ModelForm):
    class Meta:
        model = Ebook
        fields = ['title', 'cover_photo']
        widgets = {
            'cover_photo': ClientsideCroppingWidget(
                width=400,
                height=600,
                preview_width=100,
                preview_height=150,
            )
        }

ClientsideCroppingWidget的构造函数参数:

  • widthheight(int,必选):结果图像的尺寸(裁剪后)
  • preview_widthpreview_height(int):将在表单中显示的裁剪图像的预览尺寸。如果省略,则默认为width和{}参数。在
  • clearable(bool):向小部件添加一个“删除图像”按钮。如果省略,则仅当ImageFieldrequired参数设置为False时,该按钮才可见。在
  • format(str):结果图像的文件格式。必须是'jpeg'(默认)、'png'或{}。在
  • quality(int):以百分比表示的图像质量。仅当format设置为'jpeg'时才适用。对于高压缩,设置为低值;对于无损压缩,设置为100。在
  • file_name(str):裁剪图像的文件名。如果省略,将生成一个随机文件名,以避免名称冲突。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Javalog4j2。xml和log4j2test。eclipse中的xml   java映像未显示在surfaceview中   在Java中,能否在for之后立即放置if?   java调用构造函数的不同方式是什么?   java为什么不将其视为多重继承,而所有类都首先从对象类扩展,然后再扩展其他类   带有ms access的java不显示数据库结果   java Eclipse命令行URL参数切断https   java Android JNI回调似乎调用了一个随机方法   java Apache Camel处理XMLFile中声明的编码   java Bonita BPM不要等待Bonita的函数结束   布尔Java:构建逻辑表达式,然后验证它们   java在不使用QueryString的情况下将变量从一个网站页面传递到另一个网站页面   java ORA01861:文本与格式字符串不匹配   java字节[]字符串到C中的字符串#   java试图通过socket发送sqlite数据库文件   java如何使用命令行更改属性文件中的浏览器值以运行selenium测试用例