【问题标题】:Flash AS3 get bitmapdata region without transparent pixelsFlash AS3 获取没有透明像素的位图数据区域
【发布时间】:2015-03-18 10:45:15
【问题描述】:

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

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

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

【问题讨论】:

    标签: image actionscript-3 crop bitmapdata threshold


    【解决方案1】:

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

    例如,让我们取顶部边缘 (y = 0)。

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

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

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

    【讨论】:

    • 感谢 Andruha :),我正在考虑这个问题,但希望有现成的解决方案))现在必须自己写))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 2019-10-28
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 2013-01-02
    相关资源
    最近更新 更多