动画头像

:information_source: 摘要 Discourse Animated Avatars 允许用户上传动态 GIF/WebP 头像,这些头像在帖子、用户卡片和个人资料页面中悬停或选中时会进行动画展示。
:hammer_and_wrench: 仓库链接 https://github.com/discourse/discourse-animated-avatars
:open_book: 安装指南 如何在 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,插件也能正常工作,但非方形头像在显示时可能会出现拉伸现象。

:information_source: 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 任务删除。

22 个赞