def generate(request, morph_id): try: morph = Morph.objects.get(id=morph_id) if morph.final: return redirect(label='morphin:view', args=[morph_id]) except: not_found() response = {} if request.method == 'POST' and 'data' in request.POST: response['status'] = 'ok' input = json.loads(request.POST['data']) morpher = Morpher(morph.master_image.path, morph.slave_image.path) gif_path = morpher.generate_frames(input['markers']) morph.morph_image = os.path.join('uploads', str(morph.id), os.path.basename(gif_path)) morph.points = json.dumps(input['markers']) morph.save() response['data'] = input response['image_url'] = morph.morph_image.url else: response['status'] = 'error' return json_response(response)
def crop(request, morph_id): try: morph = Morph.objects.get(id=morph_id) if morph.final: return redirect(label='morphin:view', args=[morph_id]) except: not_found() if request.method == 'POST': cropper_master = Cropper(morph.master_image.path) cropper_slave = Cropper(morph.slave_image.path) master_cropdata = json.loads(request.POST['master']) slave_cropdata = json.loads(request.POST['slave']) cropper_master.crop(master_cropdata) cropper_slave.crop(slave_cropdata) # resize to the average of the two images mw, mh = cropper_master.image.size sw, sh = cropper_master.image.size w = (mw+sw)/2 h = (mh+sh)/2 print w, h cropper_master.resize(w, h) cropper_slave.resize(w, h) return redirect(label='morphin:points', args=[morph_id]) else: response = { 'morph': morph } return template_response('morphin/crop.html', response, request)
def points(request, morph_id): try: morph = Morph.objects.get(id=morph_id) if morph.final: return redirect(label='morphin:view', args=[morph_id]) except: not_found() response = {'morph': morph} return template_response('morphin/points.html', response, request)
def view(request, morph_id): firsttime = False try: morph = Morph.objects.get(id=morph_id) if not morph.final: if request.method == "POST" and 'caption' in request.POST and request.POST['caption'] != "Enter a caption. Or not.": morph.caption = request.POST['caption'] firsttime = True morph.final = True morph.save() except: not_found() if not morph.morph_image: not_found() response = { 'morph': morph, 'firsttime': firsttime } return template_response('morphin/view.html', response, request)