一种支持主题位置的模型图像场
django-subject-imagefield的Python项目详细描述
django主题图像字段
此包提供了一个SubjectImageField
模型字段,该字段继承自核心ImageField
,并添加了对主题位置的支持。
位置坐标存储在另一个定义为选项的模型字段中(与宽度和高度可选的imagefield参数一起出现)。
使用自定义表单字段和小部件,使用户可以轻松设置图像主题,并在图像预览上拖动图钉。
为了访问模板中的主题位置坐标,在字段的attr_class
中添加了一些方便的属性。
将它与某种拇指生成器应用程序一起使用,以便始终显示图像的相关部分,我发现它与sorl-thumbnail配合得很好。
测试django>;=1.11
安装
使用pip安装
$ pip install django-subject-imagefield
将其添加到已安装的应用程序:
INSTALLED_APPS = {
#...
subject_imagefield,
}
配置
您可以设置小部件的图像预览宽度:
SUBJECT_IMAGEFIELD = {
'PREVIEW_WIDTH': 500
}
值被视为像素数,默认值为300。
用法
在您的车型中:
from subject_imagefield.fields import SubjectImageField
class MyModel(models.Model):
image = SubjectImageField('image', upload_to='pages/img', subject_location_field='subject_location')
subject_location = models.CharField('subject coords', max_length=7)
在django模板中,您可以访问以下属性:
- subject_perc_position:以百分比坐标包含主题位置的字典,即:
{'x': 15, 'y': 37}
- subject_position:包含px中相对于原始图像维度的主题位置坐标的字典,即:
{'x': 700, 'y': 345}
- sorl:获取用作sorl缩略图模板标记裁剪参数的字符串的快捷方式,即:
'15% 37%'
示例:
{% load sorl_thumbnail %}
<p>Perc. subject position: {{ object.image.subject_perc_position }}</p>
<p>Original dimensions subject position: {{ object.image.subject_position }}</p>
<p>Thumb cropped considering subject position:</p>
{% thumbnail object.image "200x800" crop=object.image.sorl as thumb %}
<img src="{{ thumb.url }}" alt="ftw" />
{% endthumbnail %}