Получить доминирующий или средний цвет в getPixels ByteArray - PullRequest
0 голосов
/ 10 января 2010

Итак, у меня есть этот код:

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 ]

5 голосов
/ 15 января 2010

Средний цвет прост, просто измените размер bitmapData на draw(), добавив его в растровое изображение 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);

Нечто подобное!

3 голосов
/ 27 января 2010

К вашему сведению, это на самом деле не усредняет и не выбирает доминирующий цвет.

Делая это таким образом, вы полагаетесь на вспышку, чтобы уменьшить изображение до одного пикселя и затем решить, какой цвет использовать. Я не уверен, как этот цвет выбран, но с помощью тестов это НЕ средний NOR, это доминирующий цвет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...