README file from
GithubObsidian 图片标签插件
这是一个功能丰富的 Obsidian 插件,提供图片标签管理和图库视图功能。
功能特性
- 图片标签管理:为图片添加自定义标签,方便分类和检索
- 图库视图:可视化展示所有图片,支持网格布局
- 图片信息面板:在侧边栏查看和编辑图片的详细信息
- 搜索和过滤:通过标签或关键词快速查找图片
- 批量扫描:自动扫描库中的所有图片文件
- 页面图片提取:从当前页面提取所有图片并添加到标签系统
- SQLite 存储:使用 SQLite 数据库存储媒体信息,减少频繁 JSON 全量读写
- MD5 标识:以文件内容 MD5 作为记录 ID,重命名不会改变标签和描述
构建说明
插件已成功构建,生成的文件包括:
main.js- 插件的主要 JavaScript 代码styles.css- 插件的样式文件manifest.json- 插件的元数据信息
安装方法
-
将以下文件复制到您的 Obsidian 库的
.obsidian/plugins/目录下:main.jsstyles.cssmanifest.json
-
在 Obsidian 设置中启用插件
使用方法
-
启用插件后,您可以通过命令面板 (
Ctrl/Cmd+P) 访问以下功能:- "打开图片图库" - 打开可视化图库视图
- "打开图片信息面板" - 打开侧边栏图片信息面板
- "扫描库中的所有图片" - 扫描并索引库中的所有图片
- "从当前页面提取图片" - 从当前页面提取图片并添加到标签系统
-
在图库视图中,您可以:
- 浏览所有图片
- 按标签、标题或描述搜索图片
- 查看图片详细信息
- 添加或编辑标签
-
当打开图片文件时,图片信息面板会自动显示该图片的详细信息,您可以编辑标题、描述和标签。
配置选项
- 旧 JSON 数据路径:仅用于首次升级时定位旧版本数据
- 支持的图片格式:自定义插件处理的图片文件格式
- 导入时自动添加标签:当新图片添加到库中时是否自动创建标签数据项
- 扫描指定文件夹:通过文件夹选择器挑选需要扫描的文件夹,可添加多个;未添加任何文件夹时扫描整个库
平台支持
插件同时支持 Obsidian 桌面端与移动端(Android / iOS):
- 数据存储使用
sql.js的 asm.js 构建(.obsidian/image-tags.db),不依赖桌面端原生模块,移动端同样可用 - 文件内容指纹使用纯 TypeScript 实现的 MD5,不依赖 Node 的
crypto/Buffer - 「导出 JSON」在桌面端会弹出系统「另存为」对话框;移动端会写入库内文件
- 「导入 JSON」在桌面端会弹出系统「打开文件」对话框;移动端会从库内选择 JSON 文件
- 「用默认软件打开」为桌面端专属功能,移动端不显示该行为
数据迁移
当前版本将数据保存到 .obsidian/image-tags.db,插件首次启动时会自动读取设置中的旧 JSON 路径以及常见旧路径。迁移成功并完成 SQLite 写入后,旧 JSON 文件会被删除;迁移失败时不会删除源文件。
媒体记录的 ID 是文件内容的 MD5。文件重命名时 ID 保持不变;文件内容发生变化时,插件按原路径继承标签、标题和描述等数据,并为新内容生成新的 MD5 ID。
启动性能
- 插件启用时不再同步等待设置读取,界面先完成渲染,设置随后异步合并生效
sql.js初始化与数据库读取推迟到布局就绪后的浏览器空闲时机执行- 仅注册一份
contextmenu委托监听器,避免重复菜单与多余的启动开销
技术架构
此插件使用以下组件:
- 图片数据模型 (image-data-model.ts) - 管理图片元数据
- 图片信息视图 (image-info-view.ts) - 侧边栏信息面板
- 图库视图 (gallery-view.ts) - 主要的图库界面
- 选择器模态框 (suggest-modals.ts) - 文件夹 / 库内文件选择器,桌面端与移动端通用
- 平台工具 (platform.ts) - 收口桌面端与移动端的能力差异(Electron、fs、路径)
- 纯 TS MD5 (md5.ts) - 不依赖 Node 运行时计算文件内容指纹
- 样式文件 (styles.css) - 定制化界面样式