# 图片 EXIF 开关与方向标签：自编 JPEG 的真实对照

2026年10月17日，复用公开自编640×400方向图，像素含A红、B绿、C蓝、D紫与UP123。仅复制像素并新编码两份合成JPEG；显式写入Make=`Doc2X Synthetic QA`、Model=`Not a real camera`、Artist=`Synthetic test fixture`、DateTimeOriginal=`2001:02:03 04:05:06`，分别设Orientation1与6。两份输入的编码图像内容相同，只有方向标签不同，没有真实相机或用户数据。

没有加入GPS：设备、作者、时间和方向已足以观察保留／删除EXIF，不需引入位置断言。输入不含GPS、XMP、IPTC或嵌入缩略图，因此没有验证这些信息的删除能力。

## 两次实际转换与下载

在中文图片格式转换工具加入两份输入，输出均为JPEG。第1次保留EXIF开启，实际下载1个ZIP、含两份JPEG；第2次关闭保留EXIF，重新生成并实际下载另一个ZIP、含两份JPEG。合计2次转换、2次ZIP下载、4份原生JPEG，没有OCR、翻译或API任务。

两次原生ZIP的下载按钮各点一次，下载事件均未回报完成；随后检查新落盘文件，分别找到唯一匹配的ZIP并按字节／SHA核对、原样解出成员，没有重复下载或重新生成。完成后恢复原“保留EXIF”开启状态，未再运行；本轮产品／研究标签均关闭，本机对照服务已停止。

## Orientation1：5字段与ICC分别检查

原输入50,586字节；开启后26,335字节，5项自编EXIF字段都仍在；关闭后25,868字节，IFD0／EXIF子IFD为空，JPEG中也没有EXIF APP1。两个成品均640×400，A／B／D／C四角保留。两份成品仍有470字节ICC APP2与JFIF APP0，不能说“全部元数据清空”或“已完成所有隐私清理”。

JPEG被重新编码，输出解码像素哈希与输入不同。非零像素误差只作为这次重编码观察，不能称为无损、原像素不变或内容恢复。

## Orientation6：编码像素与标签共同决定显示

原输入编码640×400、Orientation6，按标签显示400×640，四角依次左上D／右上A／左下C／右下B。开启保留后，成品编码已经400×640，仍保留旧Orientation6；再次按该标签解释会显示640×400、四角C／D／B／A。本次浏览器直接显示该原生文件时，箭头朝下，与原输入／关闭输出的朝右不同。

关闭EXIF的方向6成品编码400×640，无方向标签，显示仍400×640、四角D／A／C／B，与原输入按标签解释的结果一致。这里记录真实边界，不声称问题已修复，也不保证所有软件、照片或方向值表现一致。未执行图片裁剪工具的EXIF自动矫正操作。

## 证据来源与复查

`metadata.png`为从真实文件读取的中文字段表，本地整理、非产品UI；`direction.png`将3份原生JPEG按各自Orientation解码后排成对照，只做对照排版缩放，标签在图片外，没有补字或重绘图像。设置截图是实际界面JPEG原字节，无补字或假UI。

本地完整检查器与独立标准库JPEG／TIFF解析、Pillow四色块采样给出73／73独立核验通过，4份JPEG与2个原生ZIP成员逐字节一致。浏览器还直接通过6个原生JPEG相对路径读取文件：natural尺寸依次640×400、640×400、640×400、400×640、640×400、400×640；2048宽视图无整页横向溢出。

公开`checks.json`是实际本地检查和已完成浏览器观察的脱本机路径副本，保留原生哈希、5字段、ICC、方向与四角实值。早先机器摘要写于浏览器验证前，公开记录改以已完成的浏览器证据为准；不把旧pending状态冒充当前状态。原生JPEG和ZIP字节均未改。

解压核对包后运行 `python3 verify_image_exif.py`。公开标准库脚本只读本包固定文件、核对哈希／2个ZIP成员、基础EXIF APP1与ICC APP2；不联网、不读取密钥、不写文件，不重复解码像素，也不是任意照片隐私或通用安全清理评测。`comparison.html`为本地原生JPEG对照页，非产品工具；图片相对路径直接加载，没有Canvas或CSS转向，JS仅读natural宽高。
