Показать сообщение отдельно
Старый 07.06.2008, 11:05
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 6  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: 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));
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.