haperone_local-image-compress/assets/README.zh-cn.md

7.9 KiB
Raw Blame History

Local Image Compress

无需云服务或 API直接在电脑上的 Obsidian 仓库中压缩 PNG 和 JPEG 文件。在不牺牲画质的前提下,将图片占用的磁盘空间减少 3070%。

Read in your language: EnglishالعربيةDeutschEspañolفارسیFrançaisBahasa IndonesiaItalianoNederlandsPolskiPortuguêsPortuguês (Brasil)РусскийไทยTürkçeУкраїнськаTiếng Việt日本語한국어中文简体中文繁體

Local Image Compress features

目录

功能

  • 本地压缩:在本地压缩 PNG 和 JPEG 图片。
  • 命令
    • 压缩笔记中的所有图片:处理活动笔记引用或使用的图片。
    • 压缩文件夹中的所有图片:选择文件夹并压缩其中所有支持的图片,不包括输出文件夹。
    • 压缩仓库中的所有图片:扫描整个仓库,不包括输出文件夹。
    • 移动压缩文件:将结果移到原文件位置;移动前备份原始版本和压缩版本。
  • 自动化
    • 添加新文件时自动压缩
    • 未压缩图片数量达到阈值且用户处于空闲状态后,在后台压缩
  • 界面与便利功能
    • 文件和文件夹右键菜单
    • 带详细提示的节省空间指示器
    • 状态栏进度指示器
  • 安全与可靠性
    • 已处理文件缓存及缓存备份
    • 移动压缩文件前创建备份,并可自动删除

支持的格式

  • PNGimagequant WASM 流程)
  • JPEG/JPGmozjpeg WASM 流程)

本版本未包含 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

工作原理

  1. 压缩文件保存在 Compressed 中,并保留原始路径结构。
  2. 缓存记录已处理文件及原始大小,以避免重复压缩并准确计算节省量。
  3. 如果原文件位于允许的根目录中,“移动压缩文件”会将文件从 Compressed 移回原位置。移动前会创建备份。

通常会跳过很小的文件PNG <5KBJPEG <10KB)。

内部安全限制固定:超过 100 MB 的文件在读取前跳过,超过 1 亿像素的图片在验证文件头后跳过。

数据存储与备份

  • **主缓存:**存储在插件文件夹中。
  • **缓存备份:**存储在 Vault/.local-image-compress/backups/cache/;最多保留 50 个文件。
  • **图片备份:**存储在 Vault/.local-image-compress/backups/originals/;替换原图前创建。

自动化

  • 启用“后台压缩”后会显示两个滑块:
    • 后台压缩阈值101000 张图片,默认 50。
    • 空闲阈值160 分钟,默认 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.plugins API因为没有公开替代方案。调用前检测功能并妥善处理错误。

隐私与外部行为

  • 网络运行时不发送网络请求。PNG/JPEG 编解码器内置于 main.js;图片不会上传。
  • 遥测与广告:不包含分析、遥测、崩溃报告、跟踪、动态广告或自动更新。
  • 账户与付款:无需账户、订阅、许可证密钥或付款。插件不会访问 manifest 中的可选赞助链接。
  • 仓库文件:插件读取由命令、自动化或允许根目录选择的支持图片。输出写入已配置的仓库相对文件夹;仅在备份后通过文档所述的手动或自动移动替换原图。
  • 本地状态:缓存位于插件文件夹;缓存与移动备份位于 Vault/.local-image-compress/backups/
  • 外部文件:插件管理的数据留在当前仓库中。“打开文件夹”只让操作系统显示已说明的备份文件夹,不传输数据。
  • 其他插件:如上所述,obsidian-paste-image-rename 可能会暂时禁用,随后在确认状态变更归属后恢复。

使用提示

  • 建议质量范围PNG 65-80JPEG 75-90
  • 若只想压缩 files/images/ 等特定文件夹,请设置“允许的根目录”。
  • 仓库中未压缩图片较多时,请使用后台压缩。

常见问题

插件提示 WebAssembly 模块初始化失败。 请重新加载插件。如果错误再次出现,请在错误报告中提供 Obsidian 版本、平台和控制台错误。

压缩文件保存在哪里? 默认保存在 Compressed。若要替换原图,请使用“移动压缩文件”。

如何计算节省量? 缓存包含原始和输出大小时,计算结果准确。对于未压缩的 PNG/JPEG插件采用有上限比例的保守估算需要时从磁盘读取当前压缩文件大小。

许可证

GPL-3.0-or-later. 第三方许可证与声明:THIRD_PARTY_NOTICES.md