深圳市坪山区坑梓街道金辉路14号1号楼705 14753353395 ladbrokes@j909.vip

游戏中心

裁掉透明边缘后怎样让图片原地不动:六张素材的裁剪锚点保持(实例23)

2026-11-07

把图片透明边缘裁去会改变局部坐标原点。如果仍沿用原来的锚点坐标,图像就可能在屏幕上偏移。正确处理需要同时调整裁剪起点与锚点。

先固定规则与数据

源图中非透明像素坐标已给定,裁剪框取它们的最小包围矩形,右下边界不包含。新锚点等于原锚点减去裁剪左上坐标;绘制时仍让锚点对齐同一个世界位置。

六张独立小图;像素坐标为整数,除列出的像素外均透明。

逐项记录过程

图片1尺寸[9, 17],原锚点[-2, 0],世界锚位[-9, 64],非透明像素[(1, 8), (2, 2), (4, 7), (6, 13), (7, 5), (8, 3)]。裁剪框[1, 2, 9, 14],新锚点[-3, -2],新绘制原点[-6, 66],像素世界位置[[-6, 72], [-5, 66], [-3, 71], [-1, 77], [0, 69], [1, 67]]。

图片2尺寸[8, 12],没有非透明像素,跳过绘制,不创建虚假的一像素裁剪框。

图片3尺寸[12, 20],原锚点[10, 4],世界锚位[47, 62],非透明像素[(1, 7), (2, 4), (4, 8), (7, 4), (7, 19), (8, 10), (9, 8)]。裁剪框[1, 4, 10, 20],新锚点[9, 0],新绘制原点[38, 62],像素世界位置[[38, 65], [39, 62], [41, 66], [44, 62], [44, 77], [45, 68], [46, 66]]。

图片4尺寸[9, 19],原锚点[3, -1],世界锚位[60, 87],非透明像素[(0, 12), (0, 17), (4, 18), (7, 4)]。裁剪框[0, 4, 8, 19],新锚点[3, -5],新绘制原点[57, 92],像素世界位置[[57, 100], [57, 105], [61, 106], [64, 92]]。

图片5尺寸[12, 11],原锚点[13, -2],世界锚位[58, 52],非透明像素[(4, 8), (5, 4), (5, 5), (7, 5), (9, 9), (10, 2), (10, 9)]。裁剪框[4, 2, 11, 10],新锚点[9, -4],新绘制原点[49, 56],像素世界位置[[49, 62], [50, 58], [50, 59], [52, 59], [54, 63], [55, 56], [55, 63]]。

图片6尺寸[12, 20],原锚点[0, 12],世界锚位[-19, -18],非透明像素[(2, 12), (3, 16), (5, 9), (5, 14), (6, 14), (9, 14), (11, 7)]。裁剪框[2, 7, 12, 17],新锚点[-2, 5],新绘制原点[-17, -23],像素世界位置[[-17, -18], [-16, -14], [-14, -21], [-14, -16], [-13, -16], [-10, -16], [-8, -23]]。

裁掉左侧和上侧空白时,新锚点可能变成负数,这仍可正确表示图像与世界锚位的关系。检查最终像素位置比只看锚点是否落在图片里更可靠。

独立复核的方法

逐个检查原图像素与裁剪后像素的世界坐标相同。锚点可以在裁剪框外,不应为了让数值看起来漂亮就强行限制进框内。若没有任何非透明像素,本例跳过绘制。

建议先按原始数据自己算一遍,保留中间状态后再与本例对照。发生分歧时,先寻找最早不同的步骤,检查边界是否包含、编号与坐标方向是否一致,以及状态是在事件之前还是之后更新。最终结果相同并不能替代对过程规则的理解,修改输入后也需要重新核算。

使用范围

这里不考虑旋转、缩放和纹理过滤,只追踪平移与像素坐标。真实素材还可能保留碰撞框、九宫格边距或其他元数据,裁剪这些素材时需要分别维护它们的坐标关系。