前言

二开PixelPunk项目,把收集的壁纸整理下并能够web访问

记录下壁纸入库整理流程。

演示站点:https://wallpaper.pkll.de/

入库页面

入库流程

1
2
3
4
5
6
7
8
9
10
11
源图目录

扫描入库

生成预览图和缩略图

AI 生成标题、标签、分类、描述等元数据

按分类整理磁盘文件,并同步更新数据库路径

生成向量数据

入库流程

扫描入库

扫描时会记录这些东西:

  • 原图相对路径
  • 文件名
  • 文件大小
  • 格式
  • 宽高
  • 横图、竖图、方图
  • 适合电脑、手机还是平板
  • checksum
  • 创建和更新时间

生成预览图和缩略图

壁纸原图通常很大,几 MB、十几 MB 都很正常。如果前台列表直接加载原图,打开页面会很慢。

1
2
预览图:用于大图预览
缩略图:用于列表、卡片、蜂巢展示

默认生成 WebP。预览图限制最大宽度,缩略图限制宽高和质量。

图片元数据提取

  • 生成展示标题。
  • 生成描述。
  • 生成标签。
  • 判断一级分类和二级分类。
  • 提取角色、作品、场景、风格。
  • 判断主色调和色板。
  • 给清晰度、审美、适合壁纸程度打分。

磁盘整理

AI 元数据里会返回一级分类和二级分类,比如:

1
2
一级分类:电脑壁纸 / 手机壁纸 / 平板壁纸
二级分类:动漫二次元 / 人物写真 / 自然风景 / 抽象纹理

按生效的分类结果整理。优先级是:

1
2
3
4
5
管理员手动锁定分类

AI 判断出来的分类

系统兜底分类

整理时会同时处理三类文件:

  • 源图
  • 预览图
  • 缩略图

比如原来图片在临时入库目录里,AI 判断它是 手机壁纸 / 动漫二次元,系统就会把源图、预览图、缩略图一起移动到对应目录,并同步更新数据库里的相对路径。

生成向量数据

把壁纸的标题、描述、标签、分类、风格、场景等文本拼成一段语义文本,然后调用 Embedding 接口生成向量,写入 Qdrant。

之后相似壁纸就可以通过 Qdrant 查出来。

备份管理

后台增加了备份管理,主要备份系统恢复最关键的内容:

  • PostgreSQL 数据库
  • 系统配置文件
  • Qdrant 向量数据

备份管理页面

支持本地备份和 WebDAV 异地备份,可以手动执行,也可以设置每天定时执行,并配置保留份数。

需要注意的是,这里备份的是核心恢复数据,不包含壁纸源图、上传文件、头像等大文件。这类文件仍然建议单独做磁盘、NAS 或对象存储备份。

改进部分

  • 首页、蜂巢、随机壁纸页统一按壁纸浏览场景优化,默认随机展示,并通过 seed 保证同一次访问内翻页和返回顺序稳定。
  • 大图预览、键盘切换、换一张等操作统一接入随机逻辑,避免按钮看起来能用但实际不换图。
  • 移动端重新整理导航、主题切换、设备切换和筛选弹窗,减少遮挡、误触和滚动卡顿。
  • AI 配置支持模型获取,优先读取当前提供商,接口不支持时仍可手动填写。
  • 向量配置支持模型获取,增加提供方配置
  • NSFW 内容改为按权限访问,并在整理时归入对应设备分类下的 NSFW 分类。
  • 后台隐藏旧图床链路页面,让管理入口更聚焦壁纸入库、AI 配置、网站装修、备份和系统设置。

整理效果

磁盘分类目录和web展示筛选分类完全同步

磁盘分类