Repository navigation
Releases: NaughtDZ/ImageDB
Releases · NaughtDZ/ImageDB
Release list
ImageDB v1.1.0 — 以图搜图 + 界面整理
新增:以图搜图 🔍
顶栏「🔍 以图搜图」:拖入、Ctrl+V 粘贴或选择一张图,在库里找相同或相近的素材。查询图只在内存里比对,不落盘、不上传网络。
| 模式 | 判定方式 | 门槛 |
|---|---|---|
| 完全相同 | 文件内容 blake2b 指纹 | 无(同一份字节) |
| 视觉近似 | pHash + aHash 平均汉明距离 | 0–16 位可调 |
| 标签相似 | 标签 Jaccard(交集÷并集) | 0–90% 可调 |
- 上传图走标签相似时,会调用已配置的打标工具(wd14 / cl-tagger)现打一次标签,只写临时文件并立刻删除;
- 也可以对库内图片「以这张找相似」,直接用它已有的标签;
- 不引入任何新模型:不下载 CLIP、不需要 GPU 推理。
索引(可重建缓存)
- 索引存在
media_hashes表里(外键级联删除),删掉只是下次搜索变慢,不影响任何媒体记录; - 建索引只读文件:读不到的只计入失败,绝不标记缺片、不改任何记录;
- 断点续跑(按大小/修改时间跳过)+ 随时停止(当前这张处理完就停,已写入的保留);
- 滚动窗口并发读取(默认 4 线程,写库仍单线程):本地实测 200 张 3.02s → 1.34s;
- 进度逐张更新,带当前文件名、速度、剩余时间。
索引健壮性修复
- 用滚动窗口替代整页屏障:一张超大图不再让整批进度停住;
- 超过 4000 万像素 → 串行解码(避免多线程同时吃几百 MB);超过 4 亿像素 → 计数跳过;
- 失败改为结构化原因并落盘清单:
unreadable(读不到)/decode(解不开)/empty/unsupported(如 svg);- 前 20 条打
WARNING,结束时输出汇总; - 清单写入
data/similar_index_failures.txt,可直接用记事本查看是哪几张、为什么;
- 前 20 条打
- PIL 的 DecompressionBomb 警告不再刷屏(上限提高到 4 亿像素,由我们自己的跳过逻辑明确处理)。
界面结构整理
- 顶栏收敛为 +导入|🔍以图搜图|⚙|⋯,重新扫描/恢复校验收进「⋯」;
- 工具栏拆成常驻行与仅在选中时出现的操作行(没选中时不再有一排“删除/移动”亮着);
- 低频项(导出/导入标签、迁移自检、回收站)收进「⋯」;图标去重(
♻原本被三个功能共用); - 实测:1280/1440/1680 宽度下不再横向溢出(此前分别溢出 524 / 358 / 124 px,1440 时 4 个按钮跑到窗口外点不到);未选中时工具栏 169 px → 48 px。
测试
- Python 隔离回归 88 项通过(新增 17 项覆盖检索、索引、失败诊断);
- 前端 Node VM 回归 22 项通过;
- 真实浏览器交互回归通过(分页、请求乱序、局部选中、标签编辑、打标弹窗重连、以图搜图全流程)。
升级说明
- 退出并重新启动程序(Python 改动,仅刷新浏览器不生效);
- 首次启动会自动创建空表
media_hashes; - 打开「🔍 以图搜图」→「建立索引」。45 万张需要跑一段时间(网络盘实测聚合约 8.5 MB/s、单张中位 50 ms,单线程约 22 小时),可挂着跑、也可只给常用目录建,期间程序照常使用;
- 没有数据库结构破坏性变更,不需要重扫,也不需要备份之外的任何手工操作。
已知弱项:旋转、镜像、大幅裁切后哈希变化较大(旋转 3° 距离约 9–15),这类需要放宽门槛。
V1.0.6 性能优化
V1.0.5 丢失图片和数据库判读逻辑修复
Full Changelog: V1.0.4...V1.0.5
V1.0.4 库逻辑更新
V1.0.3 打标功能更新
V1.0.2 易用性增强和迁移功能追加
Full Changelog: V1.0.1...V1.0.2
v1.0.1 各种功能改善和bug修复
V1.0 OUT!
I am using this version,is good.
Full Changelog: https://github.com/NaughtDZ/ImageDB/commits/V1