![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Apr 2007
Сообщений: 1,369
|
Добрый день.
Задача такая: "Нужно узнать количество черных, серых и белых пикселей в подгружаемой картинке". Как делаю: Создаю Битмап, отрисовываю подгруженный мувик(куда загрузилась картинка), атачу в битмап, удалаяю оригинал - остается мув со сглаженной картинкой. Через прохожусь по картинке. В классе Битмапа не нашел другого метода, который бы возвращал значение пикселя НО! Это ладно если она 100 на 100, в основном будут грузиться от 1250 на 1100 и выше, тогда комп просто виснет. Получается, что он ему нужно проделать 1250*1100 итераций. Как граммотно сделать подсчет пикселей определенного цвета? Или подскажите где, копать (желательно АС2) |
|
|||||
|
Регистрация: Apr 2007
Сообщений: 1,369
|
Но
заменяет пиксели определенного цвета на другой, как же он сможет подсчитать сколько пикселей в картинке со значением "ffff00" ?
|
|
|||||
|
Регистрация: Apr 2007
Сообщений: 1,369
|
Цитата:
Упс! Не внимательный был, проглядел. |
|
|||||
|
Регистрация: Apr 2007
Сообщений: 1,369
|
Да бы не создавать новую тему - продолжу тут.
Может тут соберется небольшая, но полезная кучка материала. Что делаю вообще? - строю гистрограмму, как в фотопопе. Когда-то просил помощи, линков...__etc дал пару инетересных урлов, хороших урлов, но увы, я делаю дополнительный модуль к проекту, который написали какие-то челы из Бобруйска. iNils дал намек на в Битмапдате, который возвращает кол-во замененных пикселей. Дейсвительно, у меня получилось построить гистограмму - на 99% похожую как в Фотошопе. Как делал. Я беру в цикле от 1 до 256 каждый пиксель битмапы, которая есть градиент от черного до белого, после этого я применяю к своей основной картинке (той, для которой я строю гистограмму) и заменаяю там пиксели - возвращая их количество. Потом в мувике клонирую СТОЛБЕЦ (у него сейчас высота=1) и приравниваю к его высоте вот то кол-во замещенных пикселей. Всё круто,...почти. Получается, что я построил такую байду - ТОЛЬКО для монохромных изображений, я не учитывал остальные цвета. Начал читать дальше. Наткнулся на изречение, что "PaletteMap is fast" т.е. она работает быстрее threshold-а. В хелпе сказано, что с помощью BitmapData.paletteMap method можно строить Уровни, я так понимаю, что те уровни, что и Ctrl+L in Photoshop. Собственно, как Фотопоп строит уровни? Я так понимаю, что он берет каждый канал, и пробиват от белого до черного для Красного, Синего, Зеленого - Яркость данного цвета и строит гистграммы, а потом совмещает их и строит общую. Я пробовал строить тем методом, что я делал для монохромного изображения - получается фигня (я брал пиксели от белого до черного по красному, синему и зеленому). Но перед тем, как брать пиксели я использовал var matrix:Array = new Array();
matrix = matrix.concat([0, 0, 0, 0, 0]); // red
matrix = matrix.concat([0, 0, 0, 0, 0]); // green
matrix = matrix.concat([0, 0, 1, 0, 0]); // blue
matrix = matrix.concat([0, 0, 0, 1, 0]); // alpha
var filter:BitmapFilter = new ColorMatrixFilter(matrix);
_bmp.filters = new Array(filter);
...мда..BitmapData.paletteMap method - я так понял, что в массивах он хранит значения от самого яркого красного до самого темного красного, и так далее по остальным каналам или нет? |
![]() |
![]() |
Часовой пояс GMT +4, время: 08:37. |
|
|
« Предыдущая тема | Следующая тема » |
|
|