自编 EXIF JPEG:让浏览器直接显示六个原生文件

图片均为同一公开自编方向图,没有真实相机或位置数据。本页直接使用原生 JPEG 的相对路径;没有 Canvas、旋转 CSS、重编码或剥离 EXIF。浏览器自然解释标签;下方自然尺寸由 naturalWidth / naturalHeight 只读记录。四角顺序同时给出编码像素与本地 Pillow 按标签解释的结果,供实际浏览器观察对照。

上排使用 Orientation 1 查看元数据开关;下排使用 Orientation 6 查看方向标签与像素变换。原始像素图中的“UP 123”不等于必须朝上的产品目标:本例标签6本来就要求按该方向解释。JPEG 重编码带来像素差异,不能据此判为失败。关闭 EXIF 后仍观察到 ICC 色彩配置,不代表所有元数据/隐私信息清空。

原输入:Orientation 1

source1.jpg

实际字节
50,586
编码宽×高
640 × 400
Orientation 标签
1
按标签解释后宽×高
640 × 400
标签解释后四角
左上A/右上B/左下D/右下C
浏览器 naturalWidth×naturalHeight
等图片载入
自编四色方向图的原生JPEG;浏览器自然解释原有EXIF
编码像素四角与原生文件SHA

编码像素:左上A/右上B/左下D/右下C

21550a048686793b6379ee881319be96362f607392ffa02d20754e920252fbbe

保留 EXIF 开:方向1

keep1.jpg

实际字节
26,335
编码宽×高
640 × 400
Orientation 标签
1
按标签解释后宽×高
640 × 400
标签解释后四角
左上A/右上B/左下D/右下C
浏览器 naturalWidth×naturalHeight
等图片载入
自编四色方向图的原生JPEG;浏览器自然解释原有EXIF
编码像素四角与原生文件SHA

编码像素:左上A/右上B/左下D/右下C

d392c5fefed02ee5c80d1d9ab731abcf3c3a45c978069ddc4262b1b27baaf4b4

保留 EXIF 关:方向1

remove1.jpg

实际字节
25,868
编码宽×高
640 × 400
Orientation 标签
无
按标签解释后宽×高
640 × 400
标签解释后四角
左上A/右上B/左下D/右下C
浏览器 naturalWidth×naturalHeight
等图片载入
自编四色方向图的原生JPEG;浏览器自然解释原有EXIF
编码像素四角与原生文件SHA

编码像素:左上A/右上B/左下D/右下C

ab053188bf5b87b9c452310e9695def46692b0a0cda12d169b405201066749b9

原输入:Orientation 6

source6.jpg

实际字节
50,586
编码宽×高
640 × 400
Orientation 标签
6
按标签解释后宽×高
400 × 640
标签解释后四角
左上D/右上A/左下C/右下B
浏览器 naturalWidth×naturalHeight
等图片载入
自编四色方向图的原生JPEG;浏览器自然解释原有EXIF
编码像素四角与原生文件SHA

编码像素:左上A/右上B/左下D/右下C

ece44e8130bc69d45e4e42e4ee7579d43c91c14fb53d8e6c542be96df592b04f

保留 EXIF 开:方向6

keep6.jpg

实际字节
26,415
编码宽×高
400 × 640
Orientation 标签
6
按标签解释后宽×高
640 × 400
标签解释后四角
左上C/右上D/左下B/右下A
浏览器 naturalWidth×naturalHeight
等图片载入
自编四色方向图的原生JPEG;浏览器自然解释原有EXIF
编码像素四角与原生文件SHA

编码像素:左上D/右上A/左下C/右下B

d87a32c0f46692b9051a7f49ac9eb84406d9df31afea58e3cbbdf834d2ddf97b

保留 EXIF 关:方向6

remove6.jpg

实际字节
25,993
编码宽×高
400 × 640
Orientation 标签
无
按标签解释后宽×高
400 × 640
标签解释后四角
左上D/右上A/左下C/右下B
浏览器 naturalWidth×naturalHeight
等图片载入
自编四色方向图的原生JPEG;浏览器自然解释原有EXIF
编码像素四角与原生文件SHA

编码像素:左上D/右上A/左下C/右下B

22e7db8bebbf3f82fc1af4ec60053d71921026b576572aeab4a405c0c8c8b548