| 摘要 | Discourse Animated Avatars 允许用户上传动态 GIF/WebP 头像,这些头像在帖子、用户卡片和个人资料页面中悬停或选中时会进行动画展示。 | |
| 仓库链接 | https://github.com/discourse/discourse-animated-avatars | |
| 安装指南 | 如何在 Discourse 中安装插件 |
功能
默认情况下,当未获得焦点时,动画会暂停。在主题中,当未悬停或未选中帖子时,动画会暂停。
animated_avatars_always_animate: 覆盖上述暂停行为,强制头像始终进行动画展示。
animated_avatars_min_trust_level_to_display 根据信任级别限制头像的动画展示。
尊重浏览器无障碍选项中的 prefers-reduced-motion 设置:动画将完全禁用。
上传时,动态 GIF 会自动转换为 WebP 格式,从而减小整体文件大小。可以通过 animated_gif_avatar_to_webp 设置此项(默认为 true)。
配置
此插件对 gifsicle 有一个可选依赖。它用于调整上传的 GIF 图像大小以适配方形头像,这有助于处理宽高比问题,并统一静态图像和动态图像之间的大小差异,从而实现更平滑的切换。即使没有 gifsicle,插件也能正常工作,但非方形头像在显示时可能会出现拉伸现象。
![]()
animated_gif_avatar_to_webp不需要 gifsicle。动态 GIF 将被转换为裁剪为方形头像的 WebP 格式。
要启用此功能,您需要在 app.yml 中添加对安装脚本的调用。after_code 钩子示例如下:
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/discourse-animated-avatars.git
- exec:
cd: $home/plugins/discourse-animated-avatars
raise_on_fail: false
cmd:
- $home/plugins/discourse-animated-avatars/scripts/install.sh
设置
| 名称 | 描述 |
|---|---|
| animated avatars min trust level to display | 显示动态头像所需的最低信任级别 |
| animated avatars always animate | 始终让头像进行动画展示 |
| animated gif avatar to webp | 上传时自动将动态 GIF 头像转换为 WebP 格式,以减小文件大小。(默认:true) |
| animated gif avatar webp quality | 转换为 WebP 时的质量。建议设置在 75% 到 100% 之间(默认:80%) |
技术细节
包含额外的 CLI 命令,用于确定 GIF/WebP 头像的数量,并将现有的 GIF 头像转换为 WebP。
bin/rake animated_avatars:count_animated 统计动态头像的总数,并按 GIF/WebP 分组
bin/rake animated_avatars:gif_to_webp 将现有的动态 GIF 头像转换为 WebP。新头像会自动应用,并且现有的 GIF 头像将由 CleanUpUploads 任务删除。