7.9 KiB
Local Image Compress
无需云服务或 API,直接在电脑上的 Obsidian 仓库中压缩 PNG 和 JPEG 文件。在不牺牲画质的前提下,将图片占用的磁盘空间减少 30–70%。
Read in your language: English • العربية • Deutsch • Español • فارسی • Français • Bahasa Indonesia • Italiano • Nederlands • Polski • Português • Português (Brasil) • Русский • ไทย • Türkçe • Українська • Tiếng Việt • 日本語 • 한국어 • 中文简体 • 中文繁體
目录
功能
- 本地压缩:在本地压缩 PNG 和 JPEG 图片。
- 命令:
- 压缩笔记中的所有图片:处理活动笔记引用或使用的图片。
- 压缩文件夹中的所有图片:选择文件夹并压缩其中所有支持的图片,不包括输出文件夹。
- 压缩仓库中的所有图片:扫描整个仓库,不包括输出文件夹。
- 移动压缩文件:将结果移到原文件位置;移动前备份原始版本和压缩版本。
- 自动化:
- 添加新文件时自动压缩
- 未压缩图片数量达到阈值且用户处于空闲状态后,在后台压缩
- 界面与便利功能:
- 文件和文件夹右键菜单
- 带详细提示的节省空间指示器
- 状态栏进度指示器
- 安全与可靠性:
- 已处理文件缓存及缓存备份
- 移动压缩文件前创建备份,并可自动删除
支持的格式
- PNG(
imagequantWASM 流程) - JPEG/JPG(
mozjpegWASM 流程)
本版本未包含 WebP、GIF、BMP、HEIC/HEIF 和 AVIF 编码器,因此会有意跳过这些格式。
设置
| 设置 | 说明 | 类型/范围 | 默认值 |
|---|---|---|---|
| PNG 质量(最小-最大) | 有损 PNG 量化质量范围 | 1-100(例如 65-80) |
65-80 |
| JPEG 质量 | JPEG 压缩质量 | 1-95 | 85 |
| 允许的根目录 | 允许压缩的相对路径。留空 = 整个仓库 | 字符串列表 | 留空 |
| 输出文件夹 | 保存压缩文件的文件夹 | 字符串 | Compressed |
| 自动压缩新文件 | 添加新图片时压缩 | 布尔值 | false |
| 后台压缩 | 空闲时在后台压缩 | 布尔值 | true |
| 后台压缩阈值 | 自动启动所需的未压缩图片数量 | 10-1000 | 50 |
| 空闲阈值 | 启动后台压缩前无用户操作的分钟数 | 1-60 分钟 | 2 |
| 自动备份保留 | 自动删除移动前创建的旧备份 | 布尔值 | false |
| 备份保留天数 | 启用自动保留时删除早于 N 天的移动备份 | 1-365 | 30 |
| 自动移动压缩文件 | 启动时将文件移回原图位置并替换原图 | 布尔值 | false |
| 自动移动阈值 | 触发自动移动的待移动文件数量 | 1-1000 | 50 |
工作原理
- 压缩文件保存在
Compressed中,并保留原始路径结构。 - 缓存记录已处理文件及原始大小,以避免重复压缩并准确计算节省量。
- 如果原文件位于允许的根目录中,“移动压缩文件”会将文件从
Compressed移回原位置。移动前会创建备份。
通常会跳过很小的文件(PNG <5KB,JPEG <10KB)。
内部安全限制固定:超过 100 MB 的文件在读取前跳过,超过 1 亿像素的图片在验证文件头后跳过。
数据存储与备份
- **主缓存:**存储在插件文件夹中。
- **缓存备份:**存储在
Vault/.local-image-compress/backups/cache/;最多保留 50 个文件。 - **图片备份:**存储在
Vault/.local-image-compress/backups/originals/;替换原图前创建。
自动化
- 启用“后台压缩”后会显示两个滑块:
- 后台压缩阈值:10–1000 张图片,默认 50。
- 空闲阈值:1–60 分钟,默认 2。
- 启用“备份保留天数”后会显示保留期滑块。
- 启用“自动移动压缩文件”后会显示文件数阈值。启动时,
Compressed中的文件数达到或超过阈值即开始移动。
与 Paste Image Rename 的交互
压缩或移动文件时,本插件会暂时禁用第三方插件 obsidian-paste-image-rename。此保护无法关闭,因为压缩结果与原图的映射依赖新文件不被其他插件重命名。
为什么需要此保护
为何需要此保护:
- Paste Image Rename 注册了
vault.on("create")处理器,在图片添加到仓库约一秒后运行。它始终处理以Pasted image开头的文件;启用“Handle all attachments”时还会处理所有其他图片。 - 本插件向输出文件夹写入压缩副本时会触发该处理器。存在活动 Markdown 视图时,它会重命名输出并破坏移动所需的映射,或为每个文件显示重命名对话框。没有活动视图时,它会为每个文件显示
Error: No active file found,使批处理期间界面充满错误。 - Obsidian 没有供一个插件暂停另一个插件的公开 API,因此暂时只禁用该插件是唯一可靠的解决方案。
安全处理方式:
- 仅在压缩或移动期间影响已知 ID
obsidian-paste-image-rename。 - 操作后会在必要时重试恢复,除非其状态被外部更改。保护机制记录是否由自己禁用插件,发生这种更改后不会尝试恢复。
- 启用和禁用使用 Obsidian 内部
app.pluginsAPI,因为没有公开替代方案。调用前检测功能并妥善处理错误。
隐私与外部行为
- 网络:运行时不发送网络请求。PNG/JPEG 编解码器内置于
main.js;图片不会上传。 - 遥测与广告:不包含分析、遥测、崩溃报告、跟踪、动态广告或自动更新。
- 账户与付款:无需账户、订阅、许可证密钥或付款。插件不会访问 manifest 中的可选赞助链接。
- 仓库文件:插件读取由命令、自动化或允许根目录选择的支持图片。输出写入已配置的仓库相对文件夹;仅在备份后通过文档所述的手动或自动移动替换原图。
- 本地状态:缓存位于插件文件夹;缓存与移动备份位于
Vault/.local-image-compress/backups/。 - 外部文件:插件管理的数据留在当前仓库中。“打开文件夹”只让操作系统显示已说明的备份文件夹,不传输数据。
- 其他插件:如上所述,
obsidian-paste-image-rename可能会暂时禁用,随后在确认状态变更归属后恢复。
使用提示
- 建议质量范围:PNG
65-80,JPEG75-90。 - 若只想压缩
files/或images/等特定文件夹,请设置“允许的根目录”。 - 仓库中未压缩图片较多时,请使用后台压缩。
常见问题
插件提示 WebAssembly 模块初始化失败。 请重新加载插件。如果错误再次出现,请在错误报告中提供 Obsidian 版本、平台和控制台错误。
压缩文件保存在哪里?
默认保存在 Compressed。若要替换原图,请使用“移动压缩文件”。
如何计算节省量? 缓存包含原始和输出大小时,计算结果准确。对于未压缩的 PNG/JPEG,插件采用有上限比例的保守估算;需要时从磁盘读取当前压缩文件大小。
许可证
GPL-3.0-or-later. 第三方许可证与声明:THIRD_PARTY_NOTICES.md。
