用户裁剪的头像上线后位置偏移,脸被切掉一半。乍看像缓存或者权限的锅,追下去往往不是。
x = int(ratioX * originW) y = int(ratioY * originH) w = int(ratioW * originW)
追下去是这么回事:前端按显示尺寸取坐标,后端按原图尺寸裁剪,没有做比例换算。
「头像裁剪」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。
偶发问题先统计频率,一小时几次和一天一次,查法完全不同。改完顺手把文档补一句,省得下次自己重新推一遍。
监控和日志的时间要对上,时区不一致会多绕很大一圈。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。
动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。
具体做法是,前端提交裁剪框相对比例;后端按原图尺寸换算坐标;输出正方形统一尺寸。
验收就看一点,裁剪结果与用户预览一致,头像居中。