You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub仓库Issue上传时自动压缩user-attachments/assets图片大小?

GitHub Issue大图片自动压缩方案

可行方案概述

完全可以实现大图片自动压缩,且GitHub Action是最适合的触发方式,能在用户上传图片后自动完成压缩优化,提升帖子可用性。

一、自动压缩的核心实现思路

  • 监听Issue或评论的创建/编辑事件,识别其中上传到user-attachments/assets的图片文件
  • 对超过体积阈值(比如1MB)的图片,用专业工具压缩到网页友好的尺寸(比如长边≤1920px),同时保留足够画质
  • 压缩完成后,替换原图片附件或更新评论中的图片链接,确保显示的是优化后的版本

二、GitHub Action具体实现步骤

  1. 配置触发事件:在Action的YAML文件中设置监听Issue和评论的创建、编辑动作:
    on:
      issues:
        types: [created, edited]
      issue_comment:
        types: [created, edited]
    
  2. 获取图片附件:通过GitHub API拉取当前Issue/评论的附件列表,筛选出.jpg、.png、.webp等格式的文件
  3. 安装压缩工具:在Action运行环境中安装sharp(Node.js工具)或ImageMagick(命令行工具),比如:
    npm install sharp
    
  4. 执行压缩逻辑:编写脚本处理图片,以sharp为例:
    const sharp = require('sharp');
    // 压缩图片至长边不超过1920px,质量80
    await sharp('original.jpg')
      .resize({ width: 1920, withoutEnlargement: true })
      .jpeg({ quality: 80 })
      .toFile('compressed.jpg');
    
  5. 更新内容:将压缩后的图片上传回user-attachments/assets,并调用API修改Issue/评论中的图片链接,替换为压缩后的文件路径
  6. 权限配置:在Action的权限设置中开启issues: write和contents: write,确保有修改Issue和操作附件的权限

三、实用注意事项

  • 防重复压缩:给压缩后的图片添加后缀(比如-compressed),或者记录已处理的文件ID,避免重复触发压缩流程
  • 画质与体积平衡:根据图片类型调整压缩参数,截图类图片可适当降低质量,摄影类图片保留更高画质
  • 格式优化:优先将图片转换为WebP格式,相同画质下体积比JPG/PNG小30%-50%,进一步提升加载速度

内容的提问来源于stack exchange,提问作者Fred

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 15:03:22