最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Djangoimgareaselect手动剪切头像实现方法

来源:动视网 责编:小采 时间:2020-11-27 14:41:14
文档

Djangoimgareaselect手动剪切头像实现方法

Djangoimgareaselect手动剪切头像实现方法:本文实例讲述了Django imgareaselect手动剪切头像的方法。分享给大家供大家参考。具体如下: index.html: 上传图片 show.html: HTML5的标题 ul {width:80%;padding:5px;} li{list-style:none;fl
推荐度:
导读Djangoimgareaselect手动剪切头像实现方法:本文实例讲述了Django imgareaselect手动剪切头像的方法。分享给大家供大家参考。具体如下: index.html: 上传图片 show.html: HTML5的标题 ul {width:80%;padding:5px;} li{list-style:none;fl
 本文实例讲述了Django imgareaselect手动剪切头像的方法。分享给大家供大家参考。具体如下:

index.html:

 
 
 
 
上传图片 
 
 
 
 
 

show.html:

 
 
 
 
HTML5的标题 
 
 
 
 

继续上传头像

{% if messages %} {% for message in messages %} {{ message }}

{% endfor %} {% endif %} {%for p in photos%}

  • 继续剪切
  • {%endfor%}

    cut.html:

     
     
     
     
    剪切 
     
     
    
    
    

    forms.py:

    #coding=utf-8 
    from django import forms 
    class PhotoForm(forms.Form): 
     photo_name = forms.ImageField(label=u"头像") 
    class HatHeadCutForm(forms.Form): 
     x1=forms.IntegerField(widget=forms.TextInput(attrs={'size': 4,})) 
     y1=forms.IntegerField(widget=forms.TextInput(attrs={'size': 4,})) 
     x2=forms.IntegerField(widget=forms.TextInput(attrs={'size': 4,}))
     y2=forms.IntegerField(widget=forms.TextInput(attrs={'size': 4,})) 
     w=forms.IntegerField(widget=forms.TextInput(attrs={'size': 4,})) 
     h=forms.IntegerField(widget=forms.TextInput(attrs={'size': 4,})) 
    
    

    models.py:

    #coding=utf-8 
    from django.db import models 
    class Photo(models.Model): 
     photo_name=models.CharField(u"图片路径",max_length=255) 
     photo_thumb=models.CharField(u"图片缩略图",max_length=255) 
    
    

    views.py:

    #coding=utf-8 
    from django.core.urlresolvers import reverse 
    from django.shortcuts import render_to_response, get_object_or_404 
    from django.http import HttpResponse,HttpResponseRedirect 
    from django.template import RequestContext 
    from django.contrib import messages 
    import os,uuid,ImageFile,Image 
    from PhotoCut.headhat.forms import PhotoForm,HatHeadCutForm 
    from PhotoCut.headhat.models import Photo 
    from PhotoCut.settings import MEDIA_ROOT,HEADHAT_ABS_PATH,HEADHAT_VIR_PATH 
    def index(request,templates="headhat/index.html"): 
     template_var={} 
     form=PhotoForm() 
     if request.method=="POST": 
     form = PhotoForm(request.POST.copy(),request.FILES) 
     if form.is_valid(): 
     file=request.FILES.get("photo_name",None) 
     if file: 
     p=ImageFile.Parser() 
     for c in file.chunks(): 
     p.feed(c) 
     img=p.close() 
     if img.mode != 'RGBA': 
     img = img.convert('RGBA') 
     if img.size[0]>img.size[1]: 
     offset=int(img.size[0]-img.size[1])/2 
     img=img.crop((offset,0,int(img.size[0]-offset),img.size[1])) 
     else: 
     offset=int(img.size[1]-img.size[0])/2 
     img=img.crop((0,offset,img.size[0],(img.size[1]-offset))) 
     img.thumbnail((300, 300)) 
     file_name="%s.jpg"%str(uuid.uuid1()) 
     img.save(os.path.join(HEADHAT_ABS_PATH,file_name),"JPEG",quality=100) 
     messages.info(request,u"上传成功!") 
     p=Photo.objects.create(photo_name=file_name) 
     p.save() 
     return HttpResponseRedirect(reverse("headhat_cut",kwargs={"id":p.id})) 
     template_var["form"]=form 
     return render_to_response(templates,template_var,context_instance=RequestContext(request)) 
    def cut(request,id,templates="headhat/cut.html"): 
     template_var={} 
     p=get_object_or_404(Photo,pk=int(id)) 
     if not p.photo_name: 
     messages.info(request,u"请先上传图片!") 
     return HttpResponseRedirect(reverse("headhat_index")) 
     template_var["vir_path"]=os.path.join(HEADHAT_VIR_PATH,p.photo_name)
     form=HatHeadCutForm() 
     if request.method=='POST': 
     form=HatHeadCutForm(request.POST) 
     if form.is_valid(): 
     try: 
     img=Image.open(os.path.join(HEADHAT_ABS_PATH,p.photo_name)) 
     except IOError: 
     messages.info(request,u"读取文件错误!")
     data=form.cleaned_data 
     img=img.crop((data["x1"],data["y1"],data["x2"],data["y2"]))
     img.thumbnail((50, 50)) 
     file_name="%s_%s"%(os.path.splitext(p.photo_name)[0],"_50_50.jpg") 
     img.save(os.path.join(HEADHAT_ABS_PATH,file_name),"JPEG",quality=100)
     p.photo_thumb=file_name 
     p.save() 
     messages.info(request,u"剪切成功!") 
     return HttpResponseRedirect(reverse("headhat_show")) 
     else: 
     messages.info(request,u"请剪切后 再保存!") 
     template_var["form"]=form 
     return render_to_response(templates,template_var,context_instance=RequestContext(request)) 
    def show(request,templates="headhat/show.html"): 
     template_var={} 
     photos=Photo.objects.all() 
     template_var["path"]=HEADHAT_VIR_PATH 
     template_var["photos"]=photos 
     return render_to_response(templates,template_var,context_instance=RequestContext(request)) 
    
    

    希望本文所述对大家的Python程序设计有所帮助。

    文档

    Djangoimgareaselect手动剪切头像实现方法

    Djangoimgareaselect手动剪切头像实现方法:本文实例讲述了Django imgareaselect手动剪切头像的方法。分享给大家供大家参考。具体如下: index.html: 上传图片 show.html: HTML5的标题 ul {width:80%;padding:5px;} li{list-style:none;fl
    推荐度:
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top