Halo 存储工具箱
Halo 存储增强插件,支持图片格式转换、水印添加等功能,帮助优化网站图片加载性能。

功能特性
🖼️ 格式转换
- 自动将上传的图片转换为 WebP 或 AVIF 格式
- 可调节输出质量(1-100)
- 显著减小图片体积,提升加载速度
- AVIF 格式压缩率更高,适合现代浏览器
💧 水印功能
- 文字水印:自定义文字、字体大小、颜色
- 图片水印:支持上传自定义水印图片,可调节缩放比例
- 位置设置:九宫格位置选择(左上、居中、右下等)
- 透明度:可调节水印透明度(0-100%)
- 边距控制:自定义 X/Y 方向边距百分比
🎯 精准控制
- 指定目标存储策略
- 指定目标分组
- 文件格式过滤(jpeg、png、gif、webp)
- 文件大小过滤(最小/最大限制)
- 支持控制台上传和编辑器上传(Halo 2.22+)
⚡ 性能优化
- 流式处理大图片,降低内存占用
- 支持处理超大尺寸图片
📊 处理日志
- 记录每次图片处理的详细信息
- 统计成功/失败/跳过数量
- 显示节省的存储空间
- 支持按文件名、状态、时间筛选
- 自动清理过期日志
📈 存储分析
- 存储统计:按类型、策略、分组统计附件数量和大小
- 重复检测:基于文件哈希识别重复文件,显示可节省空间
- 引用扫描:扫描文章/页面中的附件引用,识别未引用附件
安装
- 从 Releases 下载最新版本的 JAR 文件
- 在 Halo 后台 → 插件 → 安装 → 本地上传
- 启用插件
⚠️ 注意:本插件使用了 WebP 和 AVIF native 库进行图片格式转换。由于 JVM 的 native 库加载机制限制,插件更新后需要重启 Halo 才能正常工作。热更新可能导致 native 库冲突或功能异常。
使用说明
基本配置
- 进入插件设置页面
- 在「全局设置」中启用图片处理
- 根据需要选择目标存储策略和分组
格式转换
- 在「图片处理」→「格式转换」中启用
- 选择目标格式(WebP 或 AVIF)
- 调节输出质量(推荐 75-85)
💡 格式选择建议:WebP 兼容性好,推荐大多数场景使用;AVIF 压缩率更高但需要较新浏览器支持(Chrome 85+、Firefox 93+、Safari 16+)
添加水印
- 在「图片处理」→「水印设置」中启用
- 选择水印类型(文字/图片)
- 配置水印内容、位置、透明度等参数
查看日志
- 进入 Halo 后台 → 工具 → 存储工具箱
- 在「处理日志」标签查看处理统计和详细记录
- 可按条件筛选日志
存储分析
- 进入 Halo 后台 → 工具 → 存储工具箱
- 在「统计」标签查看存储空间分布
- 在「分析」标签进行重复检测和引用扫描
开发
环境要求
- Java 21+
- Node.js 20+
- pnpm 9+
本地开发
# 克隆项目
git clone https://github.com/Tim0x0/halo-plugin-storage-toolkit.git
cd halo-plugin-storage-toolkit
# 启动 Halo 开发服务器
./gradlew haloServer
# 开发前端(新终端)
cd ui
pnpm install
pnpm dev
构建
./gradlew build
构建产物位于 build/libs 目录。
技术栈
- 后端:Java 21、Spring WebFlux、Halo Plugin API
- 前端:Vue 3、TypeScript、Halo Console Components
- 图片处理:Java ImageIO、WebP ImageIO、AVIF ImageIO
许可证
GPL-3.0 © Tim0x0