Flash AS3 获取没有透明像素的位图数据区域

Flash AS3 get bitmapdata region without transparent pixels

我有商品图片。一些图像周围有白色边框。白色不均匀并且有一些阴影(质量差等)。我需要切断这个边界。要去除白色,我使用:

bd.threshold(bd, rect, pt, ">", threshold, color, maskColor);

阈值后有一些 none 透明像素,因为阈值颜色对于每个图像都是唯一的。 BitmapData.getColorBoundsRect return 区域包含 none 个透明像素。我需要没有这个像素的区域(只有图像)。检查每个像素是否对大图片不利。最经济的方法是什么(在下图中找到绿色区域)?抱歉我的英语不好,感谢您的帮助。

图像有四个边缘:左、右、上、下。检查它们中的每一个,从边缘开始并向图像内部移动。

例如,我们取上边 (y = 0)。

  1. 选择边缘的任意水平位置,例如,x = 10。
  2. 检查 (x, y) 处的像素。
  3. 如果是透明的,把边往下移:y++;
  4. 转到 2 并重复直到像素不透明。
  5. 选择不同的水平位置并转到 2。

用不同的 x 重复几次。如果只有偶尔的不透明像素,重复该过程 5-10 次将为您提供一个新的顶部边缘,这很可能是 100% 精确的。图像大没关系,你只检查边缘的几个地方。对左、右和底部边缘执行相同的操作。然后复制由这些边定义的图像。

如果边缘质量真的很差,那么最好手动编辑所有图像。