# Cursor Canvas 导出图片模糊排查：预览清楚，下载图片尺寸也要正确

Cursor Canvas 导出图片模糊。已在DPR1/2/3实际下载并解码1200×800 PNG，重复绘制和逻辑坐标检查通过；Cursor会话未执行。

## 开始

先读 task.md 和 prompt.md。starter 是可打开但未实现任务逻辑的起点工程，reference 是本站人工完成的参考。目标代理没有参与生成此次原生账号会话，不能把参考代码称为该产品已执行结果。

```bash
python3 -m http.server 8073 --directory reference
```

HTTP网页访问 http://127.0.0.1:8073/ ，按顺序点击输入、操作和导出控件。8073是示例端口，可自行换用空闲端口。

## 文件

- starter/：起点工程及明确需求。
- reference/：可运行人工参考、原创输入和实际运行结果。
- task.md：七步任务和独立验收。
- verify.py：回读实际下载文件、结果结构和边界的检查。
- native-*-draft.*（若有）：原生结构草案，明确未完成导入/运行验证。

## 本题操作要点

1. 预览显示300×200，要求导出1200×800。先分清CSS尺寸、内部像素与下载像素，DPR变化不应改变最终交付规格。

2. 原图是Canvas绘制的原创贴纸文字和细线，不是低清照片。参考工程会等待document.fonts.ready再绘制。

3. 每次render使用setTransform重设坐标，避免重复scale使文字越画越大。DPR2下内部600×400但逻辑仍300×200。

4. 下载时另建1200×800画布并重绘，不截取预览页面，也不按屏幕DPR决定下载尺寸。

5. 分别在DPR1/2/3真实浏览器上下文点击下载，得到三个PNG文件。双击canvas中心应约为逻辑150,100；事件坐标取整允许1像素差。

6. 直接解码PNG宽高，不能用DOM宽高推断文件。对中文与细线按同一像素比例检查，不通过拉伸缩略图制造清晰差异。

7. 三份实际PNG都应1200×800；重复绘制位置不增长。没有使用超分或生成模型，不把尺寸变大称为恢复原本不存在的细节。

## 官方依据

- https://cursor.com/docs/agent/browser
- https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Optimizing_canvas

Google与抖音查询词是内容目标，不代表实测搜索量、热榜或流量结果。
