此应用程序允许上载和裁剪图像
django-image-cropper的Python项目详细描述
此应用程序用于图像裁剪。用户可以上传一些图片或照片, 选择希望的区域并保存图像。
执照是麻省理工学院的。
要求
从0.2版开始,需要1.3+版的django。如果你是 请使用较旧的django版本
你还需要安装PIL或枕头图形库。菌毛 将与Django图像裁剪器一起安装
安装
首先,请安装django映像裁剪器:
pip install django-image-cropper
然后您必须编辑设置模块:将项目“裁剪器”添加到 您已安装的应用程序:
INSTALLED_APPS += ( 'cropper', )
下一步将django图像裁剪器url配置添加到url模块:
urlpatterns = patterns('', .... url('^cropper/', include('cropper.urls')), ... )
最后一次调用项目中的syncdb management命令:
./manage.py syncdb
如果您使用的是django.contrib.staticfiles应用程序,那么 需要收集静态文件:
./manage.py collecstatic
否则,您需要将django图像裁剪器/裁剪器/静态文件复制到 手动创建静态根目录或创建符号链接。
用法
在浏览器中打开/croper/url。在这里您可以通过文件输入选择图像 然后上传。在下一个屏幕上,如果启用了javascript并且静态服务 很好,您将看到jquery的jcrop插件工作区。挑一块地方推 “裁剪”按钮可裁剪图像
裁剪后的图像副本保存在服务器上
自定义裁剪逻辑
当然,默认逻辑很差,无法使用。但你很容易改变 应用程序行为。
你可以为图像上传和图像裁剪编写自己的成功处理程序 Django使用它。
要在默认设置中使用自己的hanlders,只需使用自己的urlconfs。你必须使用 拥有关键字args中的“success”键。此值必须是python可调用类型
from cropper.forms import CroppedForm, UploadForm from my_project.utils import my_upload_handler, my_crop_handler urlpatterns = patterns('cropper.views', url('^$', view='upload', name='cropper_upload', kwargs={'form_class': UploadForm, 'success': my_upload_handler}), url('^(?P<original_id>\d+)/$', view='crop', name='cropper_crop', kwargs={'form_class': CropForm, 'success': my_crop_handler}), )
如您所见,您还可以使用另一个表单类,而不是standart 指定“form_class”键,但可能不需要。
它是什么处理程序?
每个处理程序都是python函数,它有一些输入参数并返回 像每个视图函数一样,httpresponse对象。
让我们看看如何上传处理程序原型:
def my_upload_success_handler(request, form, original): """ Success upload handler """ print "Uploda form data", form.cleaned_data print "File uploaded to " % original.image.path # This handler do nothing, but print parameters from django.shortcuts import redirect return redirect(original)
- request是wsgirequest对象(与view相同)
- form是上载表单实例。此表单实例仍然有效。
- original是原始模型实例。图像字段调用image
裁剪处理程序原型:
def my_crop_success_handler(request, form, original, cropped): """ Custom crop handler """ print "Crop form data", form.cleaned_data print "Original object: %s" % original print "Original in cropped model (the same in previous line): %s" % cropped.original print "Cropped image: %s" % cropped.image # For example, we can use cropped image as user profile avatar # Perhaps user is authenticated and skip checks ;) from django.core.files.base import ContentFile from django.contrib import messages from django.shortcuts import redirect import os profile = request.user.get_profile() profile.avatar.save( os.path.basename(cropped.image.path), ContentFile(cropped.image.path) ) messages.success(request, 'Avatar uploaded and cropped') return redirect(request.user)
前三个参数与上载处理程序输入参数相同。第四是 cripped模型实例。它有image字段包含裁剪的图像和 相关原始照片的外键。
贡献
如果你发现了一个bug,实现了一个特性并且认为它是有用的,那么请 考虑贡献。欢迎提供修补程序、拉取请求或只是建议!