Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Скоростная работа с битмапами [D7, WinXP]


Grief ©   (2005-04-20 13:44:00) 

Товарищи мастера, есть у меня один вопрос, а точнее два: 1) Как проверит то, что на двух битмапах одинаковое изображение? Если сравнивать попиксельно - очень медленно, а по другому не получается... :( А второй, как побыстрее копировать изображение одного DC на другой?
BitBlT работает вполне прилично, но все-таки порой проц сильно загружен. Как ускорить?


Grief   (2005-04-22 16:23:00) [1]

Marser - гениально - проверять некоторые точки
Мне как раз примерно это и подойдет, наверно, только некоторые кадры не пропечатаются, т. к. а если не попадет на нужную точку изменение? SammIk - надо, покажи прогу или кинь на мыло если не в лом!


SammIk   (2005-04-21 14:22:00) [2]

=) Если надо у мя есть про-ра быстрого сравнения памяти)


SammIk   (2005-04-21 14:22:00) [3]

=) Если надо у мя есть про-ра быстрого сравнения памяти)


alpet   (2005-04-21 13:33:00) [4]

Вариант c GetDIBits самый быстродействующий. Он позволяет на больших растрах копировать кусочки, которые можно проверять. Таким образом на не совпадение можно наткнуться и в начале цикла, тогда как вариант с хешем потребует вычисления для всего растра (если не хэшировать отдельные же регионы, но хэши в данном случае вероятностный метод - может и ошибится).


Marser   (2005-04-20 19:42:00) [5]

Сеткой.


Marser   (2005-04-20 19:41:00) [6]


> Grief ©  

Самый простой вариант - выборочное сравнение, допустим, 2-3% точек на разных участках рисунка.


SammIk   (2005-04-20 19:34:00) [7]

Можна выбрать массив пикселей и посчитать хеш.
Но это если сравнивать большие файлы и которых много.


alpet   (2005-04-20 19:05:00) [8]

WinAPI такого сервиса вроде не предоставляет. То что предложено - самый (имхо) оптимизированный вариант. Если GetDIBits кажется слишком навороченной, используй обертку для нее GetBitmapBits.


Grief   (2005-04-20 18:46:00) [9]

а... это туда же, я понял... а может есть-таки функция? ну например хотя бы можно определить, что рисунок полностью черный? ну все цвета = 0?


Grief   (2005-04-20 18:43:00) [10]

ну точнее со сравнением?


Grief   (2005-04-20 18:42:00) [11]

А со вторым?


Grief   (2005-04-20 18:39:00) [12]

сэнкс!


Marser   (2005-04-20 18:26:00) [13]

http://www.delphimaster.ru/articles/pixels/index.html

> Радмин? Я наверно совсем тупой, но я не слышал об
> этом, что это такое?

Remote Admin. Система удаленного администрирования.


Grief   (2005-04-20 18:21:00) [14]

Радмин? Я наверно совсем тупой, но я не слышал об этом, что это такое?


alpet   (2005-04-20 16:19:00) [15]

1. GetDIBits + CompareMemory
2. DirectDraw: BltFast, Blt (MSDN: CAggDrawSurface)


Eraser   (2005-04-20 15:32:00) [16]

Grief ©

РАдмин изобритаешь? )

К сожалению тут без написания драйверов не обойтись. Попробуй раскурочить Радмин дизассемблером IDA- многое станет ясно...


Наверх

Титульная страница Поиск, карта сайта Написать письмо