Title: 利用GitHub Actions自动对仓库内图片进行无损压缩

URL Source: https://wiki.eryajf.net/pages/dbee9e/

Published Time: 2022-08-01T23:42:32.000Z

Markdown Content: 利用GitHub Actions自动对仓库内图片进行无损压缩 | 二丫讲梵

===============

Image 3: 二丫讲梵二丫讲梵

首页

运维运维

专题专题

生活生活

编程编程

周刊周刊

关于

友链

页面页面

GitHub (opens new window)

Image 4

二丫讲梵

行者常至,为者常成

首页

运维运维

专题专题

生活生活

编程编程

周刊周刊

关于

友链

页面页面

GitHub (opens new window)

二丫讲梵

2022-08-01

Image 5利用GitHub Actions自动对仓库内图片进行无损压缩

文章发布较早,内容可能过时,阅读注意甄别。

我维护的 awesome-github-profile-readme-chinese(opens new window) 项目旨在收集汇总中文区优秀的个人主页,每个人的主页将会通过截图的方式存放在 exampls 目录下,有时候有的朋友主页内容很多,这样整体截图下来就非常大。

本文就介绍一个有意思的小动作,它的主要功能是可以自动扫描仓库内的图片,然后对其进行几乎无损的压缩,让整个仓库的体积保持在一个相对低的水平。

所用 Actions:image-actions(opens new window)

使用配置其实非常简单,基本上阅读完官方介绍文档就可以上手使用了,这里说一两个需要注意的地方。

首先添加 Actions 配置文件,e.g..github/workflows/images.yml

name: 压缩图片
on:
  push:
    branches:
      - main
    paths:
      - "**.jpg"
      - "**.jpeg"
      - "**.png"
      - "**.webp"
  workflow_dispatch:
jobs:
  build:
    name: calibreapp/image-actions
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@v2
      - name: Compress Images
        id: calibre
        uses: calibreapp/image-actions@main
        with:
          githubToken: $
          compressOnly: true
          jpegQuality: "60"
          jpegProgressive: false
          pngQuality: "60"
          webpQuality: "60"
      - name: Create New Pull Request If Needed
        if: steps.calibre.outputs.markdown != ''
        uses: peter-evans/create-pull-request@v3
        with:
          title: "🛠 压缩图片"
          branch-suffix: timestamp
          commit-message: "🛠 压缩图片"
          body: $

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

28

29

30

31

32

33

34

35

36

需要注意,压缩图片的动作,在运行之后,会自动将图片二次 commit 上来,这就要求该动作具有对应 commit 的权限才行,通常我们配置的 token 没有其他开发者 fork 之后的仓库的权限,于是这里并不能直接处理其他人 PR 过来的内容中的图片。

官方给出的建议是:

  • 要么其他开发者通过在主仓库 check 一个分支,然后在主仓库进行分支的 PR。但这种方式其实并非是 GitHub 中协作的主流场景,多用在开发者个人维护的流程。
  • 要么就是先处理其他人通过 fork 的方式提交上来的 PR,当 PR 被同意之后,会自动进行扫描检查,然后该动作完成图片压缩之后,再自动创建一个新的 PR,来完成图片的压缩。

还需要注意的一点是:其中的 secrets.GITHUB_TOKEN是操作当前仓库使用的,不需要进行更改,如果改了,反而会报错。

效果如下:

Image 6

这个动作会自动将图片处理好,然后提交到当次 PR 上,我们可以点开 View diff 查看前后的区别:

Image 7

目前这个效果据我个人放大前后两张照片来看,在体积缩小了 80%的情况下,清晰度几乎是一致的,还是非常给力的一个动作,适合那些存放图片比较多的仓库。

打赏

Image 8: 微信Image 9: 支付宝

上次更新:2024/09/26, 21:41:44

利用GitHub Actions自动生成个人star列表并归类利用GitHub Actions自动检测项目中的问题链接

利用GitHub Actions自动生成个人star列表并归类利用GitHub Actions自动检测项目中的问题链接

最近更新

01学习周刊-总第213期-2025年第22周05-29 02学习周刊-总第212期-2025年第21周05-22 03从赵心童世锦赛夺冠聊聊我的斯诺克情缘05-16更多文章>

Theme by Vdoing Copyright © 2017-2025 [Image 10: 点击查看十年之约 ](https://www.foreverblog.cn/)浙ICP备18057030号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式