#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))