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

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为什么执行一组测试会给单独执行的测试带来不同的结果?   java如何防止jsp应用程序跨框架脚本编写?   java理解EDT和共享对象?   java使用spring读取附加的PDF文件   Java垄断游戏   java Magnolia REST工具   java如何在实例化时模拟对象?   在while循环中获取多个输入时出现java错误   java oracleConnection。createARRAY不使用WebLogic数据源连接   posthtml获取posthtml代码(在JavaEclipse中)   java如何从Unix时代开始将日期/时间字符串转换为分钟?   java将int与数字进行比较的最佳方法   端口8443上通过ssl的java Spring安全登录在使用http协议的端口8080上无法识别   JavaSpring的sec:intercepturl容易被绕过?