使用裁剪工具进行图像裁剪的 Django 应用程序

2023-12-22

我需要一个在客户端裁剪图像的应用程序,我的意思是,使用像 Jcrop jquery 插件这样的裁剪工具。

我找到了这个工具:

  • django-图像裁剪器 https://github.com/marazmiki/django-image-cropper
  • django 图像裁剪 https://github.com/jonasundderwolf/django-image-cropping
  • django-图像处理程序 https://github.com/luddep/django-imagehandler
  • django-头像-作物 https://github.com/zen4ever/django-avatar-crop

但最后两个取决于管理员,前两个似乎与他们自己的 ImageFields 和模型非常耦合,有什么好的解决方案吗?

我们正在开发一个具有许多功能的大型应用程序,并且很难更改编写的逻辑


我认为这可能是你最好自己写的东西,因为它取决于你的数据和模型的布局方式,你是否(以及在哪里)想要保存作物,如果你想保留原件等。即使如果您有一个大型应用程序,您可能会花费更多时间尝试修改其他代码来完成您的情况所需的操作。

(这段代码非常粗糙 - 我只是真正列出步骤)

如果您有一个带有图像字段的模型,您可以添加第二个图像字段来保存裁剪后的图像:

class MyModel(models.Model):
    image = models.ImageField(...)
    image_crop = models.ImageField(...)

以及一个带有额外字段的表单,用于保存将在客户端表单中填充的 jcrop 坐标(该字段将被隐藏)。以什么形式将坐标保存到字段中由您决定,但使用 json 字典(客户端上的 json.js 和服务器端的 simplejson)可能是一个主意,如下所示:

{ 'x1' : '145', 'y1' : '200'  ... }

表格:

class MyModelForm(form.ModelForm):
    """ Hide a field to hold the coordinates chosen by the user """
    crop_coords = forms.CharField(attrs={'style':'display:none'})        

    class Meta:
         model = MyModel

处理所有这些的视图:

def some_view(request):
    form = request.POST
    if form.is_valid():
        crop_coords = form.cleaned_data['crop_coords']
        # decode the coords using simpleson (or however you passed them)
        ...
        # create a cropped image 
        original_image = form.cleaned_data['image']
        cropped_image = cropper(original_image.path, crop_coords)
        ...
        # save it back to the db - http://stackoverflow.com/questions/1308386/programmatically-saving-image-to-django-imagefield
        ...

以及使用 PIL 创建裁剪图像的函数:

# Look here: http://djangosnippets.org/snippets/224/
def cropper(original_image_path, crop_coords):
    """ Open original, create and return a new cropped image
    ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用裁剪工具进行图像裁剪的 Django 应用程序 的相关文章

随机推荐

  • 如何让 Powershell 等到命令完成后再继续?

    我的脚本会在安装较新版本之前卸载 Windows 应用商店应用程序 我需要确保在安装之前卸载已完成 那么如何确保我已经等待了足够长的时间 Remove Appxpackage MyAppName wait here Add Appxpack
  • 如何使用 JDBC 从存储过程中获取*所有内容*

    当使用 JDBC 处理 SQL Server 存储过程时 我偶尔会遇到两种奇怪的行为 Issue 1 我在 SQL Server Management Studio SSMS 中运行一个存储过程 它返回一个结果集 然而 当我尝试 try C
  • 仅在第一次调用变量时才执行工作的 Pythonic 方式

    我的 Python 类有一些变量需要在第一次调用时进行计算 后续调用应该只返回预先计算的值 我不想浪费时间做这项工作 除非用户确实需要它们 那么有没有一种干净的 Pythonic 方式来实现这个用例呢 我最初的想法是第一次使用 proper
  • Android中如何将图像转换为字节数组

    我面临一个现实问题 我需要将图像转换为字节数组格式 以便我可以将字节数组上传到网络服务器 我已经尝试了很多但它不起作用 我还得到了字节数组的负值 我不确定在数组中获取字节值我做错了什么 下面是我的代码 请帮助我我做错了什么 Bitmap b
  • 未找到 APOC 程序

    CALL apoc export csv query match m Movie where m name Matrix return m name re sults csv 错误 Neo ClientError Procedure Pro
  • Python-camelot(安装时错误:GhostscriptNotFound)

    我正在尝试使用camelot从pdf中提取表格数据 但出现以下错误 Code tables camelot read pdf file name Error GhostscriptNotFound 请确保 Ghostscript 已安装并且
  • Azure 中的 Serilog 与 API 应用程序

    我已将 Serilog 集成到使用 Asp Net Core 2 0 开发的 WebApi 项目中 这是配置代码Program cs Log Logger new LoggerConfiguration Enrich FromLogCont
  • 将字符串转换为 C# 中的控件名称[重复]

    这个问题在这里已经有答案了 可能的重复 按名称在 C winforms 中查找控件 https stackoverflow com questions 4483912 find a control in c sharp winforms b
  • 找到两个向量之间的最佳/缩放/移位

    我有两个向量表示函数 f x 另一个向量 f ax b 即 f x 的缩放和移位版本 我想找到最好的规模和转变因素 最佳 通过最小二乘误差 最大似然等 有任何想法吗 例如 f1 0 0 450541598502498 0 083821377
  • 输入后忽略回车键的C代码

    我遇到了标准输入流中的 Enter 键或字符弄乱以下输入调用的问题 假设我有一个输入调用 所以我输入了内容 但随后将 Enter 键作为下一个输入调用的输入 我认为在c 中有cin ignore 来做到这一点 我就是找不到C版本 输入法有g
  • 如何在VBA中保存工作表

    我正在构建一个表单 当您填写该表单时 它应该生成 2 个文件作为输出 为了做到这一点 我在后台有 2 张纸 我根据用户输入的按钮将其保存 作为 csv 来填充 这是保存工作表的代码 Worksheets worksheetname Save
  • 带彩色输出的工头运行防护装置

    我可以从我的工头 procfile 中运行守卫 但输出并不像我想要的那样丰富多彩 我在输出中看到的唯一颜色来自 Foreman 我想要一个管理 rspec 黄瓜和茉莉花的保护文件 并且在这些测试运行时有漂亮的颜色输出 看起来好像工头忽略了防
  • 为什么 Magento 每个会话使用 2 个 cookie?

    出于数据安全和隐私原因 我想知道为什么 Magento 对一个前端会话使用两个 cookie 我所知道的是其中一个正在被设置Mage Core Model Cookie set 另一个在Zend Session expireSessionC
  • HTML & XHTML id 属性问题

    id 属性值可以以数字开头吗 对于 HTML 没有 http www w3 org TR html401 types html type name http www w3 org TR html401 types html type nam
  • 安卓中的人脸识别

    我需要在 Android 4 0 的应用程序中实现人脸识别登录 由于 Android Ice Cream Sandwich 中提供了人脸识别解锁功能 是否有任何开放的 SDK 或内置库来实现此功能 到目前为止 我遇到过外部 API 例如ht
  • Jenkins 管道 sh returnsstdout 不工作

    我正在尝试使用 Jenkins pipeline sh 命令的 returnStdout 功能 此处定义https jenkins io doc pipeline steps workflow durable task step code
  • JAR 文件:为什么提取然后压缩 JAR 文件会创建与原始大小不同的文件?

    我试图编辑提取的 Eclipse 插件 jar 文件中的单个字节 我注意到 在我将文件重新压缩为 jar 后 生成的文件比原始文件大 仅 1 并且该插件不起作用 Eclipse 已启动 但在选择工作区后静默关闭 回滚到原来的插件可以让它成功
  • 删除 index.php 并处理两个 Codeigniter 站点的子域(当其中一个站点位于另一个站点时)

    我有两个 Codeigniter 站点 一个位于另一个站点的子目录中 我需要一些帮助来修改我的 htaccess 文件以从两者中删除 index php 第一个站点 http subdomain domain com存储在 home sit
  • 将 2D 数组传递给 C++ 函数

    我有一个函数 我想将可变大小的二维数组作为参数 到目前为止我有这个 void myFunction double myArray myArray x y 5 etc 我在代码中的其他地方声明了一个数组 double anArray 10 1
  • 使用裁剪工具进行图像裁剪的 Django 应用程序

    我需要一个在客户端裁剪图像的应用程序 我的意思是 使用像 Jcrop jquery 插件这样的裁剪工具 我找到了这个工具 django 图像裁剪器 https github com marazmiki django image croppe