![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Привет!
Есть два объекта BitmapData одинакового размера(bmp1 и bmp2). На них что то нарисовано, это может быть и картинка, не важно. Нужно получить третий объект BitmapData (bmp3) являющийся результатом сложения двух первых, с таким условием: Можно конечно без проблем пробежаться по всем точкам, но это будет очень медленно. Меня интересует способ сложения BitmapData , будь то комбинация BlendMode или фильтр... или бог знает что ![]() Заранее спасибо за ответы!
__________________
зная будущее, хотя бы, на 10 минут вперед, можно покорить весь мир... |
|
|||||
|
Отрисовать в 3 бмп дату сначало 1, потом 2... или 2, потом 1...
Отрисовывается методом draw
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
методом draw будет складываться по альфаканалу, а мне нужно по цвету
т.е. если у меня то результатом будет Нужен какой то другой способ, более быстрый.
__________________
зная будущее, хотя бы, на 10 минут вперед, можно покорить весь мир... |
|
|||||
|
грузим рисунки
http://dnadillo.dn.ua/images/imag/magna_carta_131.JPG http://dnadillo.dn.ua/images/imag/magna_carta_127.JPG в бит мапу ставим бленд моде blendMode="darken"; складываем их http://dnadillo.dn.ua/fla/in-2-1.swf http://dnadillo.dn.ua/fla/in-2-1.zip |
|
|||||
|
не помогает...
blendMode он сравнивает по каналам... а мне нужно что бы сразу по всему числу цвета...
__________________
зная будущее, хотя бы, на 10 минут вперед, можно покорить весь мир... |
|
|||||
|
Цитата:
Суть такая есть два массива числовых данных, надо получить третий массив по указанному выше условию... Просто эти данные рисуются в битмап дате... так быстрее их генерить! А вот сравнивать не очень быстро...
__________________
зная будущее, хотя бы, на 10 минут вперед, можно покорить весь мир... |
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
Если по точкам медленно, то можно по байтовому массиву. Надо уточнить, какое время обработки вас устроит.
Здесь в тесте, для двух картинок размером 2400x2400 время генерации результирующей: 2814 мс. var bmp1:BitmapData = new TestBmp1(0,0); //2400x2400
var bmp2:BitmapData = new TestBmp2(0,0); //2400x2400
var tm:int = getTimer();
var b1:ByteArray = bmp1.getPixels(bmp1.rect);
var b2:ByteArray = bmp2.getPixels(bmp2.rect);
var b3:ByteArray = new ByteArray();
b1.position=0;
b2.position=0;
var len:int = b1.bytesAvailable / 4;
while (len--) {
var c1:uint = b1.readUnsignedInt();
var c2:uint = b2.readUnsignedInt();
b3.writeUnsignedInt((c1 & 0xFFFFFF) > (c2 & 0xFFFFFF) ? c1 : c2); // не учитывая alpha
}
var bmp3:BitmapData = new BitmapData(bmp1.width, bmp1.height);
b3.position = 0;
bmp3.setPixels(bmp3.rect, b3);
trace("time:", getTimer()-tm); // time: 2814
addChild(new Bitmap(bmp3));
|
|
|||||
|
Да интересный вариант! Но все равно тут перебор а он кушает очень много времени!
__________________
зная будущее, хотя бы, на 10 минут вперед, можно покорить весь мир... |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 111
|
Хм у меня получилось получить 3й битмап где то в 4-5 раз быстрее чем через byteArray.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 12:23. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|