R2 技术验证 · 大图上传不变形

现系统大图上传后被拉伸/挤压变形。根因通常是:① 用固定宽高 resize 没保比例;② 前端 <img width height> 写死把图拉伸;③ EXIF 方向丢失导致旋转。本 demo 对比错误与正确做法。

现系统:强行固定宽高 圆变椭圆 = 变形
把 1600×900 的横图塞进 260×260 固定框(width:260px;height:260px), 横向被压、纵向被拉,testsrc2 里的圆变成椭圆——这就是"变形"。
正确做法:等比适配 + 保方向 不变形
同一张图,容器 260×260 但用 object-fit:contain + width/height:auto, 再加 image-orientation:from-image 保 EXIF 方向,比例完好。
自测:选一张你自己的大图,看原始尺寸 + 正确渲染
❌ 固定 300×200(变形)
✅ 等比 contain(不变形)
尚未选择图片
生产方案(原图保真 + 多尺寸派生 + 响应式输出) 上传:分片上传(OBS Multipart / tus),原图存对象存储 raw/ 桶 —— 原图永不修改 处理:服务端按需派生 200/400/800/1600 + 原图,强制等比(fit=inside,禁止 fill)+ autoRotate 修 EXIF 输出:<img> 用 srcset/sizes 响应式,浏览器自动选最佳尺寸;CSS 一律 object-fit:contain/cover 不写死宽高 信创:图片处理优先华为云 OBS 图片样式(绕开 Node 原生库)/ 备选 Java Thumbnailator
响应式输出示意(同一张大图,容器自适应,永不变形)
4000×2250 大图,width:100%;height:auto
4000×2250 的大图,width:100%;height:auto 随容器缩放,比例始终正确。拖动窗口宽度观察。