def _rotate_photo(meeting, person): photo = person.decoded_data.get('photo') app = flask.current_app if photo: file_path = app.config['UPLOADED_PHOTOS_DEST'] / photo file_output_path = sugar.generate_filename() image = Image.open(file_path) image = image.rotate(-90) image.save(file_output_path) person.data['photo'] = file_output_path.name person.save() file_path.unlink() return flask.jsonify({ 'photo': '%s' % person.image_file })
def _crop_photo(meeting, person, url): app = flask.current_app form = flask.request.form x1 = Decimal(form['x1'] or 0) + Decimal(0.1) y1 = Decimal(form['y1'] or 0) + Decimal(0.1) x2 = Decimal(form['x2'] or 0) + Decimal(0.1) y2 = Decimal(form['y2'] or 0) + Decimal(0.1) valid_crop = (x2 > Decimal(0.1) and y2 > Decimal(0.1)) if person.has_photo and valid_crop: file_path = app.config['UPLOADED_PHOTOS_DEST'] / person.data['photo'] file_output_path = sugar.generate_filename() img = Image.open(file_path) img = img.crop((x1, y1, x2, y2)) img.save(file_output_path) person.data['photo'] = file_output_path.name if not 'original_photo' in person.data: person.data['original_photo'] = file_path.name else: file_path.unlink() person.save() return flask.redirect(url)