图像裁切区域契约
主图裁切前,用归一化坐标保存商品观察区域
制作TikTok Shop主图时,可以先保存商品观察区域,再安排裁切与视觉整理。无线鼠标的轮廓、滚轮和按键需要保持可见,裁掉这些部位可能影响识别。本文用归一化坐标记录原图区域,解决资料交接问题;代码不判断平台合规,也不验证AI输出与实物相同。
假设团队有一张鼠标原图,编辑圈出需要保留的观察范围。直接保存像素位置,只能对应特定尺寸的文件;同一画面等比例缩放后,旧像素值就不便复用。把位置除以原图宽高,形成相对坐标,能给下一位编辑解释区域在哪里,但前提是画面方向与构图没有改变。
Picset图片精修页面提供产品图与比例等选择,可承接主图候选整理。先写清需要保留鼠标完整轮廓与滚轮,再在输出后观察。公开入口不证明裁切自动满足TikTok Shop规则,本篇没有读取某个地区类目的全部发布条件,因此发布前需要查看对应站点当前官方要求和实际预览。
下面函数约定box按左、上、右、下排列,坐标单位为像素,原点在左上。输入宽高为正数,区域不能越界,也不能倒置或退化。函数返回四个相对值,没有执行图片裁切。代码与图片变换之间保留明确边界,调用方需要按自己的图像工具应用这些值。
import math
def normalized_region(box, width, height):
if width <= 0 or height <= 0:
raise ValueError('invalid image size')
if len(box) != 4 or not all(
isinstance(v, (int, float)) and math.isfinite(v) for v in box
):
raise ValueError('invalid coordinates')
left, top, right, bottom = box
if not (0 <= left < right <= width and 0 <= top < bottom <= height):
raise ValueError('out of bounds')
return [left/width, top/height, right/width, bottom/height]
宽高由可靠的文件读取结果提供,调用前验证类型与有限性,不让外部任意值直接进入计算。这里的最小函数聚焦区域约定,未处理图片方向元数据与坐标系转换。若源文件旋转后显示,先统一显示方向再圈区域,否则坐标可能落在另一边。记录所用原图版本同样必要。
本地合成样本检查了有效转换、越界、倒置、非有限坐标与零尺寸五条路径。它们只证明程序对这些输入作出约定行为,样例数值不属于真实鼠标图片,也不体现平台允许的留白比例。文章配图不标尺寸或评分,避免把代码验证误读成主图规范测试。
相对坐标只有在适当的变换条件下才方便复用。等比例缩放同一画面可以映射,若先裁切、拉伸或改变方向,就需要重新计算关系。不要把归一化理解成所有编辑操作后仍有效。保存原图标识、尺寸、方向与区域用途,让接手者判断能否沿用,而不是只交四个数字。
观察区域也不能替代商品审核。框内包含鼠标,仍需看滚轮有没有变形、按键是否增减、接口是否凭空出现。一个错误主体可以完整落在区域里,程序却不会发现。资料校验通过和视觉审核通过分别记录,出现问题时定位是区域选错、变换不当还是生成内容改变。
主图用途需要清楚的销售组成。充电线、接收器与桌面道具若出现在候选里,核对它们是否属于本次套装。裁切可能让配件看起来与主体连在一起,或隐藏重要信息,员工预览时一起检查。地区、类目与图位规则按当时官方要求处理,不由本地代码下平台放行结论。
最终交接保存原图、观察区域、变换说明和采用图,后续改尺寸时重新核对映射。归一化坐标帮助保留编辑意图,AI工具帮助制作候选,来源与视觉检查决定商品是否仍被正确展示。这样主图裁切有了可追查的起点,发布准备也知道哪些技术记录可用、哪些判断仍需完成。
参考资料
[1] Picset 当前公开工作室页面