Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Определение количества того или иного цвета... (http://www.flasher.ru/forum/showthread.php?t=136870)

Maraekb 27.02.2010 16:07

Определение количества того или иного цвета...
 
Подскажите пожалуйста возможно ли определение количество того или иного цвета у загружаемой картинки:o:rolleyes:

Zebestov 27.02.2010 16:52

у картинки есть цвет? это у картинки Малевича есть цвет — черный =) и квадратный...

derhab 27.02.2010 17:29

если я правильно понял и нужно получить процентное содержание пикселей определенного цвета в битмапдате, то можно так

Код AS3:

function getColorPercent(bmd:BitmapData, sColor:uint):Number
{
        var w:int = bmd.width;
        var h:int = bmd.height;
        var totalPixels:int = w * h;
        var count:int;
 
        for(var i:int = 0; i < w; i++){
                for(var j:int = 0; j < h; j++){
                        var col:uint = bmd.getPixel(i, j);
                        if(col == sColor)count++;
                }
        }
 
        return count * 100 / totalPixels;
}


Котяра 01.03.2010 10:45

Ну может некое среднее по больнице - типа Розовый период Пикассо))))
т.е. оттенки розового преобладают.
Вопрос сложный на самом деле.. тут надо более точно сформулировать ваши требования.
Какое количество цвета по вашему у равномерного градиента от чистокрасного FF00FF к чисто зелёному 00FF00 ?

derhab 02.03.2010 05:32

Цитата:

Сообщение от Котяра (Сообщение 890093)
...от чистокрасного FF00FF...

FF00FF это не красный:)

Добавлено через 43 минуты
например, красно-зеленый градиент 100х100

Код AS3:

var shape:Shape = new Shape();
 
shape.graphics.beginGradientFill('linear', [0xff0000, 0x00ff00, 0x00ff00], [1, 1, 1], [140, 250, 255]);
shape.graphics.drawRect(0, 0, 100, 100);
shape.graphics.endFill();
 
var bmd:BitmapData = new BitmapData(shape.width, shape.height)
bmd.draw(shape);
 
function getColorPercent(bmd:BitmapData, sColor:uint):Number
{
        var w:int = bmd.width;
        var h:int = bmd.height;
        var totalPixels:int = w * h;
        var count:int;
 
        for(var i:int = 0; i < w; i++){
                for(var j:int = 0; j < h; j++){
                        var col:uint = bmd.getPixel(i, j);
                        if(col == sColor)count++;
                }
        }
 
        return count * 100 / totalPixels;
}
 
var redPercent:Number = getColorPercent(bmd, 0xff0000);
trace("содержание чистого красного = " + redPercent + " %"); // 11%
var greenPercent:Number = getColorPercent(bmd, 0x00ff00);
trace("содержание чистого зеленого = " + greenPercent + " %"); // 4%


Котяра 02.03.2010 10:17

Очепятался - должно быть 0xFF0000..
я вообще не по поводу getColorPercent спрашивал, а у топикстартера - какое значение он хотел бы получить от градиентной картинки.. Исходя из этого уже придумывать алгоритм..


Часовой пояс GMT +4, время: 13:00.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.