Posted in

客户 OSD 图片预处理工坊:献给李苑美女士

这是一个为客户 OSD 图片量身定制的在线处理工坊。上传一张客户给过来的原图,工具会自动裁掉外围空白、按内容比例等比缩放,最后输出嵌入式屏幕叠加(OSD)模组能直接读取的 BMP 位图——支持 1BPP 黑白单色与 16BPP RGB565 两种色深,宽高都不超过 384 像素(考虑最大不超过 4K 水平分辨率 3840 的 1/10),处理完即可下载。整个过程在浏览器里完成,图片不在服务器保存。

如何使用这个 OSD 图片处理工坊

整个流程只需要三步,不需要安装任何软件,也不需要注册账号。

第一步:上传原图

把图片拖进左侧的虚线框,或者点击框内区域选择文件。支持 BMP、JPG、PNG、GIF、WebP 五种格式,单张最大 20 MB;原图分辨率上限为 1200 万像素、单边不超过 12000 像素。选好之后可以在框里直接预览原图与文件体积,点「更换」可以换一张。

第二步:选择输出色深

  • 1 BPP(BW):黑白单色,每个像素只占 1 位。适合纯文字、单色图标这类没有灰阶的内容,也是最省闪存的做法。
  • 16 BPP(RGB565):红 5 位、绿 6 位、蓝 5 位共 16 位彩色。绿色多分一位,是因为人眼对绿色最敏感,这样分配在有限的位宽里观感最好。

选完点「开始处理」,右侧会立刻给出结果预览,并同时显示输出尺寸、图片格式与文件大小三项参数;点下方的下载按钮即可把 BMP 保存到本地,文件名会自动带上 -1bpp-rgb565 后缀,方便区分批次。

第三步:按需微调识别参数

点开「调整识别参数」可以改两个滑块,默认值对大多数图片都够用:

参数 取值范围 默认值 作用 什么时候调
背景容差 0 至 100 24 与左上角像素颜色差异在此范围内的像素都被视为空白,裁边时会被去掉 裁剪过多、内容边缘被削掉时调低;白边没裁干净时调高
黑白阈值 1 至 254 128 仅 1BPP 生效:灰度低于阈值变黑,其余变白 二值化后字变粗糊在一起时调高;笔画断裂发虚时调低

改完任一滑块,结果预览会即时失效并提示重新处理,避免拿到过期结果。

这台工具在后台做了什么

理解这几步,遇到异常结果时就知道该往哪里调。

判定背景:以图片左上角第一个像素的颜色为基准,若该像素透明度较高则按黑色处理。这一步决定了后面「哪些像素算空白」。

裁剪外围空白:逐像素扫描,找出与背景色存在差异的内容边界,只切掉外侧的空白部分,内容内部的颜色一律保留。也就是说,图中间就算有一块和背景同色的镂空,也不会被误删。

等比缩放并留边:内容区域按 min(1, 380/内容宽, 380/内容高) 的比例缩放,保持内容比例不变、不会被拉变形;缩放后在四周各补 2 像素的背景色边沿,所以最终宽高都不超过 384 像素。

写入 BMP:按 BMP 规范逐行自下而上写入像素数据。16BPP 输出会额外写入 BI_BITFIELDS 通道掩码(红 0xF800、绿 0x07E0、蓝 0x001F)——因为 RGB565 与 RGB555 都是 16 位,不写明掩码,解码端根本分不清是哪一种,这一步是很多转换工具容易漏掉的地方。

修复残缺的 BMP:如果上传的单色 BMP 文件尾部被截断,工具会按背景色把缺失的像素补齐后再处理,并在结果里给出提示,而不是直接报错失败。

关于 OSD 图片:为什么它对格式这么挑剔

OSD 是 On-Screen Display 的缩写,指把文字或图形叠加在视频画面上的显示方式。安防摄像头的通道名与时间戳、行车记录仪的速度水印、无人机图传的电量与姿态信息、电视与显示器的菜单界面,背后都是 OSD。

和 PC 上的图片不同,负责叠加的这颗 OSD 芯片或模组通常工作在资源受限的环境里,它的要求往往很硬:

  • 不认压缩格式。PNG 的 zlib 与 JPG 的 DCT 都需要解码器,单片机上放不下,所以普遍只接受未压缩的位图。
  • 色深写死。要么是 1 位单色,要么是固定排布的 16 位彩色,不接受 24 位或 32 位。
  • 尺寸有上限。叠加区往往只有几百像素见方,图大了既放不下也刷不动。
  • 位置与背景有约定。不少方案直接用左上角像素作为背景或透明基准色,这也是本工具特意保留左上角背景、并在四周留 2 像素背景边沿的原因——把内容贴到画布边缘、把背景信息裁掉,反而会让下游叠加出问题。

所以从客户手里拿到一张 PNG 或 JPG 的 LOGO、图标、字符图,到真正能烧进设备之间,还差一道「裁剪、缩放、降色深、写成裸 BMP」的工序。这个工坊就是把这道工序做成了一个网页,拖进去、点一下、下载,几秒钟的事。

使用须知

  • 上传的图片只用于本次处理,处理完成后不在服务器留存。
  • 处理结果的有效期只到当前页面,关闭或刷新页面后需要重新上传处理。
  • 若提示「未检测到与背景不同的内容」,说明整张图都被判定成了背景,降低背景容差或更换图片即可。
  • 本工具依赖服务器 PHP 的 GD 扩展,若提示需要启用 GD,请联系站点管理员。

FAQ

Q: 什么情况下选用 1BPP,什么情况下选用 16BPP?
A:历史项目一般 AK 方案使用 1BPP,其余方案使用 16BPP,随着方案增加,具体按照实际情况而定。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注