Github 通过 ImgBot 优化图片的方法

我在逛Github学生优惠包是看到 ImgBot,它说能自己优化图像,于是尝试了一下。

简介

ImgBot 是一个为你节省时间优化图片的机器人。优化图片意味着不牺牲图片质量和更小的文件大小。 安装后不久,你会收到一个优化图片的 pull request。合并这个 pull request 就行了!Imgbot 会伴随你的工作,保持图片的优化。 ImgBot 默认使用无损压缩。

安装ImgBot

因为我已经安装了 ImgBot 了,所以文字与截图上的可能有点出入

首先来到 GitHub Market,点击 Set up a free trial

img

然后选择 Open Source (也就是免费的那个方案),然后点击 Install it for free

检查一下订单,点击 Complete order and begin installation

确认一下 ImgBot 可以访问的仓库 (默认 All),以及授予给 ImgBot 的权限,点击 Install

img

看到这个页面就说明 ImgBot 服务已经成功的安装到你的 GitHub 账户上了

img

使用ImgBot压缩图片

将 ImgBot 服务安装到你的 GitHub 账户上后,ImgBot 就会自动递归寻找并压缩 Git 仓库中的图片文件 (如果图片比较多,这一步可能回花费几天的时间),压缩好后会向你提一个像这样的 PR。

确保你选的仓库有图片,不然不会收到PR。

img

你可以点开 Datails 查看压缩前后大小、压缩率等细节,确认无误后,点击 Merge pull request 开始合并

再输入 commit 信息,点击 Confirm merge

设置ImgBot

ImgBot 默认是无损压缩的,可以按需进行配置为有损压缩,对文件大小进一步压榨。配置方法是在根目录下添加 .imgbotconfig 文件

目前有三个配置项:

  • 提交 PR 的频率:

    1
    "schedule"
    • 选项:daily | weekly | monthly
  • 排除的文件:"ignoredFiles"

    • 选项:被排除文件的路径,支持通配符*
  • 是否使用有损压缩方式 (压缩率更高):"aggressiveCompression"

    • 选项:true | false

以下是较为完整的例子:

复制代码

1
2
3
4
5
6
7
8
9
{
"schedule": "daily", // daily|weekly|monthly
"ignoredFiles": [
"*.jpg", // ignore by extension
"image1.png", // ignore by filename
"public/special_images/*", // ignore by folderpath
],
"aggressiveCompression": "true" // true|false
}

复制代码

还有更多配置项,完整说明请见官方文档

Github Actions自动合并ImgBot的pr

上传图片后,很快 ImgBot 就会对图片进行压缩,并在 github 的仓库中发起一个 pull request。手动点击合并按钮对我来说实在是太麻烦了,能不能自动搞呢。有了 actions 没啥不能的,

在 github actions 配置新增一个文件 .github/workflows/merge.yml。

复制代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
name: Merge Imgbot

on:
pull_request:
types:
- opened
- ready_for_review
pull_request_review:
types:
- submitted
status: {}

jobs:
automerge:
runs-on: ubuntu-latest
steps:
- name: automerge
uses: "pascalgn/automerge-action@v0.6.1"
env:
GITHUB_TOKEN: "${{ secrets.GIT_MERGE_TOKEN }}"
MERGE_LABELS: ""
MERGE_METHOD: "squash"
MERGE_COMMIT_MESSAGE: "pull-request-description"
MERGE_FORKS: "false"
MERGE_RETRIES: "2"
MERGE_RETRY_SLEEP: "10000"
UPDATE_METHOD: "rebase"

复制代码

这个 actions 配置中用到了 pascalgn/automerge-action,简化了对于 pull request 的操作。

这里用到了 secrets 保存 github access token,和上一步配置 PicGo 用到的 token 一样,没用过的话可在账号设置Setting-->Developersettings-->Personal access tokens 生成(注意不是项目的Settings)。

将这个token填到项目Settings-->Secrets,名称为GIT_MERGE_TOKEN。