File Compression

支持PDF与图片压缩,自动切换Python/Node后端,优化存储与传输大小。

已扫描
适合谁
需要处理大文件的办公人员、内容创作者与设计师
不适合谁
无技术环境配置能力的用户、对文件格式与压缩原理不了解者
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @hexavi8/file-compression

Skill 说明

命令、参数、文件名以原文为准

文件压缩

使用以 Python 为主的工作流,辅以 Node.js 的备用工作流进行文件压缩。

支持的文件类型

  • PDF:.pdf
  • 图像:.jpg.jpeg.png.webp

本技能可实现的功能

  • 使用预设质量等级压缩 PDF 文件。
  • 通过质量、缩放和格式控制压缩图像。
  • 当依赖项缺失时自动切换后端。
  • 检测压缩结果不佳的情况,并尝试更优策略重试。

安装要求(运行前)

必需的二进制工具:

  • python3(建议版本 >= 3.8
  • node
  • gs(Ghostscript,用于 PDF Ghostscript 路径)

Python 安装指令:

python3 -m pip install -r {baseDir}/requirements.txt

Node 安装指令:

cd {baseDir}
npm install

Ghostscript 安装示例:

  • macOS:brew install ghostscript
  • Ubuntu/Debian:sudo apt-get update && sudo apt-get install -y ghostscript

安全提示:

  • 在执行每个安装命令前,向用户说明将安装第三方包。
  • 若安装失败,报告失败的命令,并切换到可用的备用后端。

CLI 选项速查表

PDF(scripts/compress_pdf.py):

  • --preset screen|ebook|printer|prepress
  • --strategy auto|ghostscript|pikepdf
  • --remove-metadata
  • --no-linearize
  • --overwrite

PDF Node(scripts/compress_pdf_node.mjs):

  • --preset screen|ebook|printer|prepress

图像(scripts/compress_image.py):

  • --quality <1-100>
  • --format keep|jpeg|png|webp
  • --max-width <n>
  • --max-height <n>
  • --strategy auto|pillow|node
  • --overwrite

图像 Node(scripts/compress_image_node.mjs):

  • --quality <1-100>
  • --format keep|jpeg|png|webp
  • --max-width <n>
  • --max-height <n>

示例用法(Python + Node)

PDF 默认压缩:

python {baseDir}/scripts/compress_pdf.py in.pdf out.pdf

PDF 高度压缩模式:

python {baseDir}/scripts/compress_pdf.py in.pdf out.pdf --preset screen --strategy ghostscript

使用 pikepdf 压缩 PDF:

python {baseDir}/scripts/compress_pdf.py in.pdf out.pdf --strategy pikepdf --remove-metadata

通过 Node 执行 PDF 压缩:

node {baseDir}/scripts/compress_pdf_node.mjs in.pdf out.pdf --preset ebook

图像默认压缩:

python {baseDir}/scripts/compress_image.py in.jpg out.jpg --quality 75

图像转换并缩放:

python {baseDir}/scripts/compress_image.py in.png out.webp --format webp --quality 72 --max-width 1920

强制使用 Node 后端压缩图像:

python {baseDir}/scripts/compress_image.py in.jpg out.jpg --strategy node --quality 70

直接使用 Node 压缩图像:

node {baseDir}/scripts/compress_image_node.mjs in.jpg out.jpg --quality 70 --max-width 1600

环境检测与备用机制

按以下顺序检查并安装依赖:

  1. Python:python3 --version(备用:python --version
  2. Node:node --version
  3. Ghostscript:gs --version(PDF Ghostscript 路径所需)
  4. 需要时安装 Python 依赖:

- pip install pikepdf

- pip install pillow

  1. 需要时安装 Node 依赖:

- npm install

备用策略:

  • PDF:ghostscriptpikepdfnode-ghostscript
  • 图像:pillownode-sharp

python3.8+ 不可用,尝试 python3.11/3.10/3.9/3.8;若仍不可用,在可能的情况下改用 Node 流程。

执行过程透明化

始终清晰传达每一步操作:

  1. 告知用户正在检查或执行的操作。
  2. 执行前显示完整的命令。
  3. 对于耗时操作(如 pip installnpm install、大型 Ghostscript 任务),提示正在等待。
  4. 每步完成后报告结果及下一步动作。

压缩结果异常处理

当输出文件大小 ≥ 输入文件大小时,不立即终止:

  1. 报告具体大小变化:从 <before_size><after_size>,压缩比为 <ratio>%
  2. 解释可能原因:

- PDF:文件已优化、扫描图像内容、元数据开销、预设不匹配。

- 图像:格式转换不当、质量过高、小文件本身开销大。

  1. 尝试替代策略重试:

- PDF:ebook → screen,随后切换后端。

- 图像:降低质量、切换后端、转为 webp 格式,可选缩放。

  1. 返回最佳尝试结果,并说明是哪个命令生成的。

代理响应规范

每次完成压缩任务后,必须返回:

  1. 输出文件的绝对路径。
  2. from <before_size> to <after_size>
  3. saved <delta_size> (<ratio>%)
  4. 使用的后端。
H
@hexavi8

已收录 1 个 Skill

相关推荐