Skip to content

[Feature] 情绪色彩日历:基于照片视觉信号的日历热力图 #76

Description

@LC044

功能描述

一个以日历为载体的照片情绪可视化视图。每天一个色块,颜色由当天照片的主色调、内容类型、拍摄场景等视觉信号决定,形成一幅「情绪色彩地图」。点击某天的色块即可查看当天的照片。

背景与动机

手机相册里每天拍的照片,其色调冷暖、场景类型(人像/风景/室内/夜景)、内容情绪(聚会/独处/旅行/日常),本身就是当天状态的一种投影。现有的日历视图(热力图)只反映「拍了多少」,不反映「拍了什么」。

情绪色彩日历让日历从「统计工具」变成「记忆画布」——用户一眼就能感受到哪天是温暖的聚会、哪天是冷调的独处、哪天是色彩斑斓的旅行。这与年度报告的情感驱动力一脉相承,是「让人想打开」的那种功能。

实现思路

色彩映射规则

每个日历格子的颜色由以下信号综合决定:

  1. 主色调(Dominant Color):提取当天所有照片的色彩直方图,取主色作为底色。可以用简单的 K-Means 聚类或直接取平均色
  2. 内容类型权重
    • 人像多 → 色调偏暖(橙/粉)
    • 风景多 → 色调偏绿/蓝
    • 夜景多 → 色调偏冷偏暗
    • 室内多 → 色调偏灰偏暗
  3. 亮度映射:照片平均亮度映射到色块的明度,晴天户外亮,阴天室内暗
  4. 饱和度映射:旅行/聚会等「高能量」场景照片通常饱和度高,日常/工作场景饱和度低

数据来源(复用已有能力)

  • 图像分类:已有 CLASSIFY_IMAGE 任务,可判断人像/风景/室内/夜景等
  • 主色提取:新增轻量级色彩分析任务,对缩略图做 K-Means 或平均色计算即可,不需要原图
  • 视觉描述:已有 VISUAL_DESCRIPTION 任务生成的标签可辅助判断场景类型
  • EXIF 时间:已有元数据,用于按天分组

前端呈现

  • 日历网格,每个格子是一个色块(参考 GitHub 贡献热力图的布局)
  • 色块面积或透明度可映射照片数量(可选)
  • 悬浮显示:日期 + 照片数 + 主色调 + 主要场景
  • 点击进入当天照片流
  • 顶部提供月/季度/年视图切换
  • 可选:连续几天的色块连成渐变,形成「情绪波浪线」

API 设计

GET /stats/emotion-calendar?year=2026&month=6

响应:

{
  "days": [
    {
      "date": "2026-06-01",
      "photo_count": 23,
      "dominant_color": "#E8A87C",
      "brightness": 0.72,
      "saturation": 0.65,
      "top_categories": ["人像", "户外"],
      "emotion_hint": "warm"
    }
  ]
}

优先级评估

  • 用户价值:高——情感化设计,区别于所有竞品的差异化功能
  • 技术难度:中——色彩提取算法成熟,主色提取可复用 PIL/numpy,前端日历组件成熟
  • 依赖:需要新增色彩分析任务(可对缩略图操作,开销小),前端新增日历视图组件

相关

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions