获取getPixels ByteArray中的主色或平均色

时间:2010-01-10 13:40:28

标签: flash actionscript-3 actionscript

所以,我有这个代码:

import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.geom.Rectangle;
import flash.utils.ByteArray;

var bmd:BitmapData = new BitmapData(10, 10, true);
var seed:int = int(Math.random() * int.MAX_VALUE);
bmd.noise(seed);

var bounds:Rectangle = new Rectangle(0, 0, bmd.width, bmd.height);
var pixels:ByteArray = bmd.getPixels(bounds);

有没有办法快速有效地获得pixels ByteArray中的主色和/或平均色。

noise用于此处的示例。我将在BitmapData上绘制其他内容。

我找到了一些从BitmapData中提取平均颜色味觉的方法,但这对我来说还不够,因为我希望平直来自该图像。

提前致谢!

2 个答案:

答案 0 :(得分:5)

平均颜色很简单,只需通过bitmapDatadraw()调整为1x1位图,闪存将平均复制过程中的颜色。

var m: Matrix = new Matrix();
m.scale( 1 / bmd.width, 1 / bmd.height);
var averageColorBmd:BitmapData = new BitmapData(1, 1);
averageColorBmd.draw(bmd, m);
var averageColor:uint = averageColorBmd.getPixel(0,0);

类似的东西!

答案 1 :(得分:3)

仅供参考,这实际上并不是平均或选择主导颜色。

这样做就是依靠flash将图像缩小到一个像素,然后决定使用哪种颜色。我不确定这种颜色是如何选择的,但是通过测试它不是平均NOR,它是主色。