Django imgareaselect手動剪下頭像實現方法

來源:互聯網
上載者:User
本文執行個體講述了Django imgareaselect手動剪下頭像的方法。分享給大家供大家參考。具體如下:

index.html:

    上傳圖片      

show.html:

    HTML5的標題      

繼續上傳頭像

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

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

  • 繼續剪下
  • {%endfor%}

cut.html:

    剪下      

頭像剪下 返回

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

{% endfor %} {% endif %}

點擊原圖 選擇剪下地區

預覽選擇地區

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程式設計有所協助。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.