Last active
January 21, 2018 12:10
-
-
Save hustlzp/7958495 to your computer and use it in GitHub Desktop.
将Flask中上传的图片居中裁剪为正方形、缩放、保存
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
import uuid | |
from PIL import Image | |
from flask.ext.uploads import extension | |
def random_filename(): | |
"""生成伪随机uuid字符串,用做文件名""" | |
return str(uuid.uuid4()) | |
def process_image(file_storage, upload_set, max_border): | |
""" | |
将Flask中上传的图片进行居中裁剪、缩放,然后保存 | |
@param file_storage: Werkzeug FileStorage对象, 如request.files['image'] | |
@param upload_set: Flask-Uploads UploadSet对象 | |
@param max_border: 待缩放的边长 | |
@return: 图片filename | |
""" | |
# 打开图片 | |
image = Image.open(file_storage.stream) | |
# 居中裁剪 | |
w, h = image.size | |
if w > h: | |
border = h | |
crop_region = ((w - border) / 2, 0, (w + border) / 2, border) | |
else: | |
border = w | |
crop_region = (0, (h - border) / 2, border, (h + border) / 2) | |
image = image.crop(crop_region) | |
# 缩放 | |
if border > max_border: | |
image = image.resize((max_border, max_border), Image.ANTIALIAS) | |
# 保存 | |
ext = extension(file_storage.filename) | |
filename = '%s.%s' % (random_filename(), ext) | |
folder = upload_set.config.destination | |
filename = upload_set.resolve_conflict(folder, filename) | |
path = os.path.join(folder, filename) | |
image.save(path) | |
return filename |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
请问这段代码有完整的flask代码吗?我最近愁图片上传到flask框架,但不知怎么处理的问题?