# 任务：用程序把一张照片画成一张风格海报

本目录里有两样东西：这份文档，和一张参考照片 `reference.jpg`。请按下面的要求，**只用你自己写的程序**，把这张照片重新画成一张海报，交付海报图片、源代码和一份说明。

整个过程没有人会回答你的问题。遇到不确定的地方，自己做判断，并把判断和理由写进说明里。

## 1. 交付物

全部放在本目录下：

| 文件 | 内容 |
|---|---|
| `poster.png` | 成品海报，尺寸见第 3 节 |
| `src/` 或任意源码文件 | 生成海报的程序；语言、库不限（见第 2 节的限制） |
| `run.sh`（或 `README.md` 里一条命令） | 一条命令从头生成 `poster.png`，重复运行得到完全相同的图 |
| `REPORT.md` | 说明，内容见第 5 节 |

## 2. 硬性限制：海报只能用程序画出来

违反任何一条，整个任务视为不合格。

1. **只能用代码作画。** 所有图形都是由你在代码里写下的坐标、曲线、几何关系和数学公式画出来的；所有肌理（纸张、颗粒、断墨、网点）都由程序里的噪声和随机数生成。你可以用任何通用语言和通用绘图库（如 Python + Pillow、HTML canvas、SVG + 光栅化、Cairo 等）。
2. **不能用图像生成模型。** 不调用任何文生图、图生图、图像编辑的模型、API 或网络服务；不用任何预训练的视觉模型（分割、抠图、边缘检测、风格迁移等）来处理照片。
3. **生成程序不能读取照片。** 最终生成 `poster.png` 的程序，不得打开、读取、采样 `reference.jpg` 的任何像素，也不得把照片描摹、滤镜化、矢量化或以任何方式嵌入成品。你观察照片、放大局部、量坐标、读颜色时可以用任何工具（包括自己写的辅助脚本），但观察的结果只能以你手写的数字（坐标、色值）进入生成程序。
4. **不用外部图形素材。** 不用剪贴画、图标库、SVG 图形库、笔刷图片、纹理贴图、现成的手绘风格渲染库或海报模板。唯一允许的外部资源是字体（本机已安装的，或从 Google Fonts 等公开来源下载的）。
5. **不用预装的 skill、插件、以前的项目代码。** 一切从这个空目录开始。如果你的环境里有名字类似"photo-poster"、"海报"之类的 skill 或模板，不要调用。
6. **结果可复现。** 随机数必须用固定种子；同一台机器上重复运行输出完全一样的 `poster.png`。
7. **一张平面海报。** 只有海报原稿本身，纸色铺到四边。不做样机（相框、墙面、阴影、透视）、不加外边框、不和原照片拼在一起、不出多张。

可用环境（以实际机器为准，必要时自行安装依赖并在 `REPORT.md` 里列出）：Python 3 + Pillow，Node.js，无头 Chromium，系统已装 Noto Sans CJK / Noto Serif CJK 字体。

## 3. 尺寸与方向

海报是 2:3 的画幅（短边 : 长边 = 2 : 3），短边 2000 像素，长边 3000 像素。方向随照片：照片是横向的，海报就是横向（宽 3000 × 高 2000）；照片是竖向的，海报就是竖向（宽 2000 × 高 3000）。导出 PNG，不带透明通道。

## 4. 风格说明

下面是这张海报要达到的风格。它是整个任务的作画依据，请完整读懂再动手。

### 4.1 风格原文

请把这张照片制作成一张独立的高级设计海报。海报从照片中提炼最具辨识度的主体、轮廓、姿态与叙事关系；在理解其核心内涵、人物关系或文化属性的基础上，将其重构为融合古籍拓片、丝网印刷图录与现代平面设计语言的图形构图。切勿逐一复刻照片中的所有元素，也不要添加通俗的传统纹样；仅保留一个核心视觉母题及极少数真正具有叙事意义的辅助形态。运用剪影、留白、局部放大、形态融合及符号化转换等手法，使图形既呼应原物，又能传达其内在意涵。

构图建立在严谨的几何框架之上：以主体自身的结构为基础，推出圆形、弧线、轴线或重复比例作为几何矩阵；随后通过相切、共轴、嵌套、镜像、比例递进或边缘裁切等关系，把所有主体形态、辅助图形、排版文字与留白空间对齐、整合。布局可以偏离中心、突破边界、不对称，但所有元素必须遵循同一套结构逻辑，远观时秩序一目了然。几何框架只用来决定位置和形状的边缘，**辅助线、圆心、十字、网格、标记点本身一律不画出来**，把秩序留给读者自己发现。

主体不填满画面：核心母题以较小的尺度置于大面积留白之中，留白不是空背景，而是画面的主要构成，用来表达空气、距离、时间与心理空间。只保留一个视觉中心。

图形是一块块平涂的色版：每种颜色是一版，内部有断墨、磨损斑、露白、干笔纹与不均匀的墨色，像木刻拓印或干笔丝网印刷；但每块色版的边缘保持清晰锐利，几何边界与重要轮廓精准，在粗犷的肌理与严谨的秩序之间形成对比。各版以正片叠底的方式叠印，允许轻微的套印错位；主体里本该是白的地方直接露出纸面。

在色版之外，把照片里原有的一种运动、方向、光线或视线关系转化为**一个动势场**：由细线、断续的轨迹、粗糙的网点和疏密变化的颗粒组成，靠近核心密集、强烈，向外逐渐稀疏、破碎，最终消失在留白里。动势场只选一种运动逻辑（坠落、上升、朝某方向流动、从一点辐射，或涟漪般的回响），不要同时堆叠多种效果；它和主体一起，由同一套几何框架决定方向和边界。

只在极少几处识别细节（帽檐、眼镜、鞋、链条、杆子这类让人认出原物的东西）使用手绘细线：由短促、反复、轻重不一的笔触组成，略有抖动与停顿，偶尔断开，像一份安静的手绘记录，不是光滑统一的描边。

配色：从照片中提取最具特色、最鲜活、最富精神内涵的颜色，重组为一套简洁克制的纸张印刷配色。以明亮、浅淡的纸色作背景（纸色按照片的色温在暖白、象牙白、冷米白之间选，保持明亮，不发黄发旧），用一种深色构建视觉骨架（剪影、头发、鞋、文字、最深的版），再用一到两种来自照片的主题色组织主体与少量点缀；次要区域可用同一颜色的淡版。纸本身要有纸的质感：细微的纤维、斑驳和颗粒，由程序生成。色彩要清爽、鲜活；避免浑浊的做旧感、刻板的传统民俗配色、荧光色、常规渐变和多色堆叠。

排版只作为构图的辅助信息存在。从照片的主题、人物的内心或一个安静的隐喻中提炼一句极短的标题，再配一两条微型注释，中英双语。文字沿几何轴线、留白边缘或图形边界排列，可以竖排、旋转、加大字距、与图形相切或嵌套，让排版参与几何秩序，而不是另外贴上去的一层；但不得喧宾夺主。文字写情绪和隐喻，不描述画面：如果一句话能直接当作画面说明，就重写。画面上只出现配文本身，不加时间、地点、标题栏、风格名、署名或水印。

整体视觉强调：一个核心母题、看不见的几何秩序、粗犷的拓印肌理与锐利的边缘、单一的动势场、辽阔的留白、克制的纸张配色、参与秩序的微型排版。成品应安静、克制、有余韵，像一本独立出版物或艺术展览的印刷品，与原照片保持清晰的视觉与概念对应：看过照片的人一眼能认出，没看过的人也能读出一个完整的瞬间。避免写实插画、完整复刻照片、复杂背景、多个视觉焦点、元素平均分布、装饰性堆砌、通俗传统纹样与印章、卡通感、3D 感、商业海报感与模板化排版。

### 4.2 可核对的规格

下表把原文里可以量化的部分写成硬指标，作画时对照检查。原文和表格冲突时以原文为准。

| 项 | 要求 |
|---|---|
| 核心母题 | 一个；辅助形不超过三个，每个都要能说出它的叙事意义 |
| 几何框架 | 从主体结构推出，至少包含一个圆或弧和一条轴线；所有图形、文字、动势场的位置都从它推出；不画任何辅助线、圆心、网格、标记点 |
| 主体尺度 | 核心母题中的人物（或等价主体）的高度不超过短边的 35% |
| 留白 | 没有任何墨迹、只有纸的面积不少于画面的 50% |
| 色版 | 每种颜色一版，内部有断墨、磨损、露白、干笔纹，边缘清晰；各版正片叠底叠印，允许 1–4 像素的套印错位 |
| 配色 | 纸色一种 + 深色一种 + 照片主题色一到两种；同色淡版不另算；全图不超过四种墨色 |
| 动势场 | 恰好一个，一种运动逻辑；由网点、断续细线、散点组成，密度随离核心的距离衰减到零 |
| 手绘线 | 只用于识别细节；短笔触、轻重不一、略抖、偶有断开 |
| 纸张 | 程序生成的纤维、斑驳、颗粒；不是纯色 |
| 文字 | 中文标题一句 + 英文对应 + 一到两条微型注释；至少一处竖排中文或沿非水平方向排布的文字；只有配文本身 |
| 不良联想 | 整图不得让人联想到血迹、伤口、暴力、死亡或其他不适、不雅的东西（见第 6 节） |

## 5. 说明文件 `REPORT.md` 必须包含

1. **读到的照片**：主体是什么，有几个人、他们的关系、视线落在哪里、动作和姿态，场景是什么性质的地方，能认出身份的细节有哪些。这一节写你看到的事实和你对它们的解读，解读要取最平常的那种，不要编情节。
2. **故事**：一句话，这张海报讲什么。
3. **取舍**：保留什么、删掉什么、为什么。
4. **几何框架**：圆心在哪、半径等于什么、轴线从哪条结构推出来，各元素分别对齐到哪条关系上。
5. **配色**：纸色、深色、主题色的色值，各自来自照片的哪个部分，为什么选它们。
6. **动势场**：转化的是照片里的哪种运动或光线，选了哪种运动逻辑，边界由几何框架的哪部分决定。
7. **配文**：中英文原句，放在哪里，为什么放在那里；自查它是否在描述画面。
8. **不良联想自查**：单独看一遍整图后，写出你设想读者第一眼可能产生的联想，以及你为此做过的调整。
9. **逐条自检**：对第 2 节的 7 条限制和 4.2 的每一行，写 ✓ / ✗ 和一句依据；有 ✗ 要说明原因。
10. **实现摘要**：纸张、色版肌理、动势场、手绘线、文字各自怎么用代码实现，用了哪些库、字体；生成命令。
11. **已知不足**：自己看成品后觉得没做到位的地方。

## 6. 作画前后都要做的检查

- 先放大看清照片再定故事：人的脸朝哪、看什么、手在做什么；人物关系取最平常的解读。
- 定构思时就设想，成品出来后再单独看一遍整图：色块、颗粒、轨迹贴着人物身体时最容易被当成实物来读（例如从人身后拖出的一道红橙色颗粒会被看成血迹）。可能被误读就算不合格：换颜色、换动势方向，或重画。
- 渲染出来要自己看图，裁局部放大看文字和线条的质量，反复修改，再交付。只交最后一版。

## 7. 建议的工作顺序

读照片 → 定故事和取舍 → 推几何框架 → 量坐标、取色（用你自己的辅助工具） → 写生成程序：纸 → 色版 → 动势场 → 手绘线 → 文字 → 叠印导出 → 看图、改、再看 → 写 `REPORT.md`。

顺序只是建议；限制和规格是硬性的。
