【问题标题】:creating a croppable image field - how to store the widget's data?创建可裁剪的图像字段 - 如何存储小部件的数据?
【发布时间】:2011-09-28 05:38:29
【问题描述】:

我想知道如何在 Django 中最好地实现可裁剪的 ImageField。

基本上我想上传图片并裁剪它们。例如使用imagAreaSelect

我想到的第一个方法是在我的模型上创建一个 ImageField 和一些元字段来存储我选择的裁剪比例、宽度和高度。 但我想知道是否有更清洁的方法来解决这个问题并进一步封装裁剪行为。

所以最终我想将所需的行为包装在一个小部件中。 虽然我看到的问题是小部件通常映射到单个数据库字段。

所以我想知道这是否可行以及如何最好地保留我的图像数据?

【问题讨论】:

    标签: python django django-admin django-widget


    【解决方案1】:

    我们最终创建了一个可重复使用的图像裁剪应用:django-image-cropping

    【讨论】:

    • 这个应用看起来棒极了!是否可以提示用户调整大小和裁剪图像?
    【解决方案2】:

    有几种方法可以做到这一点。一种方法是从未裁剪图像的名称中推断出裁剪图像的名称。因此,如果您有一个 ImageField,并且有一个名为 uploads/images/family.jpg 的图像,您的 CropableImageWidget 可能会假定裁剪后的图像存储在 uploads/images/cropped/family.jpg 中。

    另一种方法是创建自己的数据库字段类型,用于存储您在裁剪时创建的所有文件的序列化表示。可能是通过 JSON。

    【讨论】:

    • 嘿唐纳德,感谢您的建议。我不喜欢选项 1 是我仍然必须创建一个单独的上传字段。因为我真的很希望这个功能尽可能地被封装,所以理想情况下我只需要在我的模型定义中使用我的 CropImageField 而不必设置其他东西。我也想到了将单个字段中的数据序列化,但是我想再次保留常规 ImageField 的大部分功能。我尝试过并且到目前为止看起来很有希望的是使用 CompositeField (bitbucket.org/mp/django-composite-field)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    • 2012-07-12
    • 1970-01-01
    相关资源
    最近更新 更多