【问题标题】:AS3 Bitmap black and white - for compression reasonsAS3 位图黑白 - 出于压缩原因
【发布时间】:2015-03-14 22:03:01
【问题描述】:

我有一个由 BitmapData 组成的字段,用于像素精确的命中检测。

但是,BitmapData 自然地为每个像素存储 2^32(或 2^24 没有 alpha?)的可能性。我只需要 2 个 - 黑色或白色。

但我仍然需要使用 .draw 将其他对象绘制到该 BitmapData 上。它不需要可见。

提取像素以进行命中检测似乎并不太难 - 但在不循环遍历每个像素的情况下进行绘制似乎很难。有可能吗?

解决这个问题的正确方法是什么?

【问题讨论】:

  • 我不明白这一点:'但我仍然需要使用 .draw 将其他对象绘制到该 BitmapData 上'。你什么意思?为什么需要将其他对象绘制到希望为黑白且是命中检测蒙版的位图数据中?

标签: actionscript-3 bitmap data-compression color-channel


【解决方案1】:

如果您只希望位图数据为黑色或白色,您可以在该位图上绘制新蒙版后使用BitmapData.threshold()。要将您现有的BitmapData 转换为具有半红色通道阈值的黑白,请执行以下操作:

bd.threshold(bd,bd.rect,new Point(),"<",0x00800000,0x0,0x00ff0000,true);
bd.threshold(bd,bd.rect,new Point(),">=",0x00800000,0x00ffffff,0x00ff0000,true);

第一次调用将红色低于 0x80 的所有点变为黑色,第二次调用将所有剩余点变为白色。如果需要,更改遮罩和阈值以使用绿色或蓝色通道。考虑将正确引导的ColorTransform 对象应用于您的draw 调用,以使蒙版正确应用于新绘制的对象。

【讨论】:

    猜你喜欢
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多