![]() |
|
||||||||||
|
|||||
|
[+3 04.02.07]
[+4 17.02.07] |
Привет,
у меня задача сохранить кусочек флешки в jpeg (png || bmp || etc). Все ок, кроме одного: слишком долго создается массив пикселей. this.onEnterFrame = function() {
for (i = 0;i<5 && a<=w;i++,a++){
for (var b = 0; b<=h; b++) {
var red:String = (snap.getPixel32(a, b) >> 16 & 0xFF).toString(16);
var green:String = (snap.getPixel32(a, b) >> 8 & 0xFF).toString(16);
var blue:String = (snap.getPixel32(a, b) & 0xFF).toString(16);
tmp = "0x" + red + green + blue;
pixels.push(tmp); // Вот тут проблемы
}
}
if (a>w) {
delete this.onEnterFrame;
snap.dispose();
sendDataAmf(pixels, h, w);
}
};
}
Запускал и в форах (очевидно виснет комп). Вопрос: как уменьшить время создания массива ? Есть ли альтернативные варианты создания рисунка флешкой ? П.С. использую Flash+PHP П.С.С. спасибо
__________________
Thr ArT |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
1. Мне не понятен смысл
var red:String = (snap.getPixel32 (a, b) >> 16 & 0xFF).toString (16); var green:String = (snap.getPixel32 (a, b) >> 8 & 0xFF).toString (16); var blue:String = (snap.getPixel32 (a, b) & 0xFF).toString (16); tmp = "0x" + red + green + blue; делает то же самое, а операция в несколько раз меньше. 2. Какой смысл вообще переводить в строку? Байт от этого будет только больше 3. В сети достаточно примеров таких преобразований. Лучше поискать уже готовые коды. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Я бы сказал, что в шестнадцатиричной строке цвета компоненты необязательно всегда два символа. Этот момент тут пропущен, в итоге на некоторых пикселях мы получим фигню.
И обработку надо делать на onEnterFrame, либо по таймеру. |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:14. |
|
|
« Предыдущая тема | Следующая тема » |
|
|