v1.38.3
图片显示尺寸绑定加固(Bug 修复版)
在 v1.38.2 之后对「docx 图片块显式宽高绑定」(e76f4c8)做了完整 review,本版一次性修复评审发现的全部问题:
修复
- EXIF 安全回退:JPEG 带 Orientation 5-8(显示时宽高转置的旋转,常见于手机竖拍照片)时不再下发本地解码宽高,退回服务端推断,避免显示框宽高比写反。内置轻量 EXIF 段扫描(只读 SOS 之前的段头,不解码图像数据)
- 格式补全:引入
golang.org/x/image注册 webp / bmp / tiff 解码器。网络下载图片最常见的 webp 此前无法本地解码、仍会落回服务端推断(1600px 缩略图 bug 的根因路径),现已显式绑定真实像素 - 降级兜底:带宽高的
replace_image请求被服务端以非临时错误拒绝时,自动降级为 token-only 重绑一次(等价旧行为),避免整个绑定/导入失败 - 告警治理:图片解码失败的 ⚠ 提示改为仅
--verbose输出(doc add/doc content-update等静默路径不再刷屏);表格单元格图片的消息前缀修正为「单元格图片 N」,不再与顶层图片编号混淆
内部改进
- 删除零调用的
ReplaceImage兼容包装,收敛为唯一入口ReplaceImage(doc, block, token, ReplaceImageOptions{Width, Height, Align, Caption});doc media-insert不再手工构造replace_image请求体 board upload-image复用共享的头部解码 helper(原先整图解码只为读尺寸),顺带获得 webp/bmp/tiff 支持- 新增单元测试:解码 helper 全格式/失败路径/EXIF 方向、EXIF 解析器大小端、payload 字段规则
实测验证
doc import:png 640x360 / webp 550x368 / 表格单元格 png 300x200 均显式落块(API 回读确认);EXIF Orientation=6 JPEG 正确回退服务端推断doc media-insert:webp +--align+--caption全部经新选项正确落块board upload-image --dry-run:webp 正常识别,EXIF 旋转图明确提示改用--width/--height
安装
curl -fsSL https://raw.githubusercontent.com/riba2534/feishu-cli/main/install.sh | bashFull Changelog: v1.38.2...v1.38.3