Skip to content

Instantly share code, notes, and snippets.

@hustlzp
Last active January 21, 2018 12:10
Show Gist options
  • Save hustlzp/7958495 to your computer and use it in GitHub Desktop.
Save hustlzp/7958495 to your computer and use it in GitHub Desktop.
将Flask中上传的图片居中裁剪为正方形、缩放、保存
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
@HadXu
Copy link

HadXu commented Dec 18, 2015

请问这段代码有完整的flask代码吗?我最近愁图片上传到flask框架,但不知怎么处理的问题?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment