Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.08.2007, 15:36
Molecula вне форума Посмотреть профиль Отправить личное сообщение для Molecula Найти все сообщения от Molecula
  № 1  
Ответить с цитированием
Molecula
 
Аватар для Molecula

Регистрация: Apr 2007
Сообщений: 1,369
По умолчанию Количество пикселей определенного цвета

Добрый день.
Задача такая:
"Нужно узнать количество черных, серых и белых пикселей в подгружаемой картинке".

Как делаю:
Создаю Битмап, отрисовываю подгруженный мувик(куда загрузилась картинка), атачу в битмап, удалаяю оригинал - остается мув со сглаженной картинкой.
Через
Код:
getPixel
прохожусь по картинке.

В классе Битмапа не нашел другого метода, который бы возвращал значение пикселя

НО! Это ладно если она 100 на 100, в основном будут грузиться от 1250 на 1100 и выше, тогда комп просто виснет.
Получается, что он ему нужно проделать 1250*1100 итераций.

Как граммотно сделать подсчет пикселей определенного цвета?
Или подскажите где, копать (желательно АС2)

Старый 28.08.2007, 16:20
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
BitmapData.threshold
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 28.08.2007, 16:46
Molecula вне форума Посмотреть профиль Отправить личное сообщение для Molecula Найти все сообщения от Molecula
  № 3  
Ответить с цитированием
Molecula
 
Аватар для Molecula

Регистрация: Apr 2007
Сообщений: 1,369
Но
Код:
BitmapData.threshold
заменяет пиксели определенного цвета на другой, как же он сможет подсчитать сколько пикселей в картинке со значением "ffff00" ?

Старый 28.08.2007, 16:49
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Так метод возращает число перекрашеных пикслей.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 28.08.2007, 16:52
Molecula вне форума Посмотреть профиль Отправить личное сообщение для Molecula Найти все сообщения от Molecula
  № 5  
Ответить с цитированием
Molecula
 
Аватар для Molecula

Регистрация: Apr 2007
Сообщений: 1,369
Цитата:
Returns
Number - The number of pixels that were changed.

Упс! Не внимательный был, проглядел.

Старый 29.08.2007, 16:25
Molecula вне форума Посмотреть профиль Отправить личное сообщение для Molecula Найти все сообщения от Molecula
  № 6  
Ответить с цитированием
Molecula
 
Аватар для Molecula

Регистрация: Apr 2007
Сообщений: 1,369
Да бы не создавать новую тему - продолжу тут.
Может тут соберется небольшая, но полезная кучка материала.

Что делаю вообще? - строю гистрограмму, как в фотопопе.
Когда-то просил помощи, линков...__etc дал пару инетересных урлов, хороших урлов, но увы, я делаю дополнительный модуль к проекту, который написали какие-то челы из Бобруйска.

iNils дал намек на
Код:
threshold
в Битмапдате, который возвращает кол-во замененных пикселей.

Дейсвительно, у меня получилось построить гистограмму - на 99% похожую как в Фотошопе.

Как делал.
Я беру в цикле от 1 до 256 каждый пиксель битмапы, которая есть градиент от черного до белого, после этого я применяю
Код:
threshold
к своей основной картинке (той, для которой я строю гистограмму) и заменаяю там пиксели - возвращая их количество.
Потом в мувике клонирую СТОЛБЕЦ (у него сейчас высота=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);
Т.е. я отображал в трех каналах изображание, делал копии (отрисовывал три) и по ним проходился по 255 раз ...мда..

BitmapData.paletteMap method - я так понял, что в массивах он хранит значения от самого яркого красного до самого темного красного, и так далее по остальным каналам или нет?

Создать новую тему Ответ Часовой пояс GMT +4, время: 08:37.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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