使用Flask-Avatars在Flask项目中设置头像
source link: https://greyli.com/flask-avatars/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Flask-Avatars
大多数Web程序中都会涉及到头像的实现。不同类型的项目,对于头像的需求不同,有些项目可以直接使用Gravatar提供的头像服务,而有的项目则需要提供自定义头像设置。扩展Flask-Avatars几乎满足了所有常见的头像需求:
- Gravatar头像
- Robohash头像
- 社交网站头像
- 生成随机图案头像Identicon
- 图片裁剪头像
GitHub主页:https://github.com/greyli/flask-avatars
安装与初始化
使用pip安装:
像其他扩展类似,你需要实例化从flask_avatars导入的Avatars类,并传入app实例:
如果你使用工厂函数创建程序实例,那么这里也可以不传入程序实例app,在工厂函数中对这个avatars对象调用init_app()方法时再传入app实例。
Flask-Avatars内置了几个默认头像,可以用来作为用户注册后的初始头像,或是作为博客评论者的头像。在模板中调用avatars.default()即可获取URL:
你可以通过size参数来设置尺寸,默认为m,其他可选值有l和s。实际的调用示例如下所示:
Gravatar
在模板中调用avatars.gravatar()方法并传入Email散列值即可获取Gravatar(gravatar.com)的头像URL:
Email散列值可以通过下面的方式获取:
实际的调用示例如下所示:
Robohash
Robohash(robohash.org)是一个生成随机机器人头像的服务(目前Gravatar的默认头像中已经支持这一类型,可以通过将default参数设为robohash获取)。在模板中调用avatars.robohash()并传入随机文本作为参数即可获取Robohash的头像URL:
实际的调用示例如下所示:
社交网站头像
Flask-Avatars通过Avatars.io提供了社交头像获取服务,目前支持Facebook、Twitter、Instagram和Gravatar。通过在模板中调用avatars.social_media()方法并传入用户名(username)即可获取对应的头像URL,通过size参数可以设置尺寸,可选值为small、medium和large:
通过platform参数可以设置平台,默认为twitter,可选值为twitter、facebook、instagram和gravatar:
实际的调用示例如下所示:
生成随机图案头像Identicon
Gravatar服务可能会有不稳定的情况,这种情况下,你可以在本地为用户生成头像(identicon),下面是一个简单的示例:
avatar.generate()会根据传入的随机字符创建三个尺寸(可以通过配置变量AVATARS_SIZE_TUPLE自定义)的头像,保存到指定的位置,并返回三个头像文件名。你可以将这个文件名保存到数据库中,并创建一个视图函数来提供头像文件:
实际生成的头像示例如下所示:
Flask-Avatars基于Jcrop提供了头像裁剪功能,具体步骤可以参考文档中的相关部分。下面是示例程序中的裁剪页面:
裁剪后的结果:
Flask-Avatars支持的配置列表如下所示:
配置 默认值 说明 AVATARS_GRAVATAR_DEFAULT identicon Gravatar默认头像类型 AVATARS_SAVE_PATHNone
头像保存路径
AVATARS_SIZE_TUPLE
(30, 60, 150)
头像尺寸三元素元组,格式为 (small, medium, large)
,用于生成identicon头像和裁剪头像
AVATARS_IDENTICON_COLS
7
Identicon头像一行的色块数量
AVATARS_IDENTICON_ROWS
7
Identicon头像一列的色块数量
AVATARS_IDENTICON_BG
None
Identicaon头像的背景颜色,传入RGB元组,比如(125, 125, 125)
。默认使用随机颜色
AVATARS_CROP_BASE_WIDTH
500
裁剪图片的显示宽度
AVATARS_CROP_INIT_POS
(0, 0)
裁剪框起始位置,两元素元组(x, y),默认为左上角
AVATARS_CROP_INIT_SIZE
None
裁剪框的尺寸,默认为尺寸元组中设置的l尺寸大小,即AVATARS_SIZE_TUPLE[0]
AVATARS_CROP_MIN_SIZE
None
裁剪框的限制最小尺寸,默认无限制
AVATARS_CROP_PREVIEW_SIZE
None
预览窗口的尺寸,默认为尺寸元组中设置的m尺寸大小,即AVATARS_SIZE_TUPLE[1]
AVATARS_SERVE_LOCAL
False
是否从本地加载Jcrop资源,默认从CDN加载
Flask-Avatars的Git仓库中包含三个实例程序,也就是文中的截图对应的程序:
- examples/basic —— 基本示例
- examples/identicon —— Identicon示例
- examples/crop —— 裁剪示例
你可以通过下面的方式来运行实例程序:
这篇文章属于“Flask常用扩展介绍系列”,这个系列的文章目录索引可以在《Flask常用扩展介绍系列文章索引》看到。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK