功能描述
一个以日历为载体的照片情绪可视化视图。每天一个色块,颜色由当天照片的主色调、内容类型、拍摄场景等视觉信号决定,形成一幅「情绪色彩地图」。点击某天的色块即可查看当天的照片。
背景与动机
手机相册里每天拍的照片,其色调冷暖、场景类型(人像/风景/室内/夜景)、内容情绪(聚会/独处/旅行/日常),本身就是当天状态的一种投影。现有的日历视图(热力图)只反映「拍了多少」,不反映「拍了什么」。
情绪色彩日历让日历从「统计工具」变成「记忆画布」——用户一眼就能感受到哪天是温暖的聚会、哪天是冷调的独处、哪天是色彩斑斓的旅行。这与年度报告的情感驱动力一脉相承,是「让人想打开」的那种功能。
实现思路
色彩映射规则
每个日历格子的颜色由以下信号综合决定:
- 主色调(Dominant Color):提取当天所有照片的色彩直方图,取主色作为底色。可以用简单的 K-Means 聚类或直接取平均色
- 内容类型权重:
- 人像多 → 色调偏暖(橙/粉)
- 风景多 → 色调偏绿/蓝
- 夜景多 → 色调偏冷偏暗
- 室内多 → 色调偏灰偏暗
- 亮度映射:照片平均亮度映射到色块的明度,晴天户外亮,阴天室内暗
- 饱和度映射:旅行/聚会等「高能量」场景照片通常饱和度高,日常/工作场景饱和度低
数据来源(复用已有能力)
- 图像分类:已有
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,前端日历组件成熟
- 依赖:需要新增色彩分析任务(可对缩略图操作,开销小),前端新增日历视图组件
相关
功能描述
一个以日历为载体的照片情绪可视化视图。每天一个色块,颜色由当天照片的主色调、内容类型、拍摄场景等视觉信号决定,形成一幅「情绪色彩地图」。点击某天的色块即可查看当天的照片。
背景与动机
手机相册里每天拍的照片,其色调冷暖、场景类型(人像/风景/室内/夜景)、内容情绪(聚会/独处/旅行/日常),本身就是当天状态的一种投影。现有的日历视图(热力图)只反映「拍了多少」,不反映「拍了什么」。
情绪色彩日历让日历从「统计工具」变成「记忆画布」——用户一眼就能感受到哪天是温暖的聚会、哪天是冷调的独处、哪天是色彩斑斓的旅行。这与年度报告的情感驱动力一脉相承,是「让人想打开」的那种功能。
实现思路
色彩映射规则
每个日历格子的颜色由以下信号综合决定:
数据来源(复用已有能力)
CLASSIFY_IMAGE任务,可判断人像/风景/室内/夜景等VISUAL_DESCRIPTION任务生成的标签可辅助判断场景类型前端呈现
API 设计
响应:
{ "days": [ { "date": "2026-06-01", "photo_count": 23, "dominant_color": "#E8A87C", "brightness": 0.72, "saturation": 0.65, "top_categories": ["人像", "户外"], "emotion_hint": "warm" } ] }优先级评估
相关