允许用户手动指定图像变体作物

django-imagekit-cropper的Python项目详细描述


#django imagekit croper
一个增强django imagekit的库,它允许您指定您的图像变体作物:

![ckeditor dialog](https://raw.github.com/ninapavlich/django imagekit croper/master/docs/screenshots/crop_screenshot.png)


**instancespecfield**这是一个扩展imagespecfield的类,它将模型实例传递给处理器,以便您可以访问其他模型字段来处理图像。

**InstanceFormatSpecField**这是一个扩展InstanceSpecField的类,可以动态选择图像格式(例如JPEG、PNG、GIF)。png的文件大小比jpeg大得多,但有时文件大小是值得的;这允许管理员根据每个图像进行控制。只需将引用传递到返回PIL兼容文件格式的模型字段即可。

**image crop field**这是用于设置图像裁剪的自定义模型字段。这使用一个自定义的
小部件来允许管理员可视化地裁剪图像。

**positioncrop**这是一个自定义处理器,它接收模型实例并使用图像源和图像裁剪字段的值来裁剪图像。

**formatprocessor**这是一个自定义处理器,它实现大小调整并输出到动态格式。

**positionandformatcrop**此处理器扩展positioncrop并实现动态格式。

**警告:**此库处于早期alpha阶段。我只在django imagekit==3.2.5版的django imagekit-croper安装django imagekit-croper的示例用法
`````
>>$pip install django imagekit-croper
```
````
````
`````
settings.py



























`` python
模型.py

从ImageKit_Cropper.fields导入ImageCropField、InstanceSpecField、InstanceFormatSpecField
从ImageKit_Cropper.processors导入PositionCrop、PositionAndFormatCrop、FormatProcessor


image=models.ImageField(blank=true,null=true)

={
“源”:“图像”,
“裁剪字段”:“宽度1200宽裁剪”,
“调整大小方法”:“填充”,
“宽度”:1200,
“高度”:750,
“高比例”:真
}
“宽度1200宽裁剪=图像裁剪字段(空=真,空=真,
properties=width_1200_wide_crop_properties)


width_1200_wide=instancespecfield(
source=width_1200_wide_crop_properties['source'],
options={'quality':85},
处理器=[positioncrop(width_u 1200_u-wide_u-crop_properties])




width_u 1200_u-crop_properties={
'源':'图像',
'格式字段':'获取格式',
'调整大小方法':'适合',
'宽度':1200,
'高度':无,
“高档”:假
}
width_=instanceFormatSpecField(
source=width__-crop_-properties['source'],
format_-field=width__-crop_-properties['format_-field'],
options={'quality':95},
处理器=[formatprocessor(width_1200_crop_properties)]


使用png=models.booleanfield(默认值为false,
verbose“name=”use.png(而不是.jpg)

@property
def get“格式(self):
如果self.use“png:
return“png”
return“jpeg”



“裁剪字段”:“方形裁剪”,
“格式字段”:“获取格式”,
“调整大小方法”:“填充”,
“纵横比”:1,
“最小宽度”:400,
“最小高度”:400,
“高比例”:false
}
erties=square-crop_properties)

square-200_-crop_properties=copy.copy(square-crop_properties)
square-200_-crop_properties['width']=200
square-200_-crop_properties['height']=200

square-200=instancespecfield(
format='png',
source=square-200_-crop_properties['source',
选项={'quality':85},
处理器=[位置裁剪(正方形裁剪属性)]



square裁剪属性=复制。复制(正方形裁剪属性)
square裁剪属性['宽度]=400
square裁剪属性['高度]=400

square裁剪属性=400source=square_400_-crop_properties['source'],
format_field=square_400_-crop_properties['format_-field'],
options={'quality':85},
处理器=[位置和格式裁剪(方形裁剪属性)]



`````````

````python
``admin.py



from.forms导入imageadmin form

form=imageadminform

````
``python
forms.py




from.pythondjango import forms
from imagekit_cropper.widgets import image crop widget
from.models import image




class imageadminform(forms.modelform):
square_150_cropp=forms.charfield(widget=imagecropwidget(properties=image.square_150_cropp_properties,help_text=image.help['square__cropp'])

类meta:
model=image

```

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

推荐PyPI第三方库


热门话题
Java迭代集合   java Tomcat请求因超时而取消   如何在java主程序的后台实现事件侦听器?   java使用正则表达式进行拆分,但将第一个数组元素作为空白   java从Documentum查询中读取自定义双精度值   java Android:位图内存不足错误   java Lucene复合查询搜索   java如何修复Struts DispatchAction上的StackOverflower错误?   用于从字符串中捕获数字的java正则表达式   java如何禁用来自外部jar的类或包的记录器   java“调用init方法失败;嵌套异常为javax.persistence.PersistenceException”是什么意思?   异步任务中的java Volatile和Synchronized   互联网上的java UDP。它是如何工作的?   java如何禁用“RMI TCP连接”日志记录?   安卓在Java中除以两个整数会得到0还是100?   spring boot如何在JAVA中的3个实体之间使用乐观锁定   matlab如何在Java中创建空格,轻松运行程序,并查看不同代码段的不同颜色以使其可读?   java无法解析类com。云蜂。哈德逊。插件。文件夹文件夹   java转换时区指定为GMT的日期字符串