Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Сохранение Bitmap Data (http://www.flasher.ru/forum/showthread.php?t=99097)

adelante 27.07.2007 23:44

Сохранение Bitmap Data
 
Привет,
у меня задача сохранить кусочек флешки в 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);
                }
        };

}

pixels - в этот массив загоняются данные...т.к. их слишком много, соответственно и времени больше.
Запускал и в форах (очевидно виснет комп).
Вопрос: как уменьшить время создания массива ?
Есть ли альтернативные варианты создания рисунка флешкой ?
П.С. использую Flash+PHP
П.С.С. спасибо

iNils 28.07.2007 00:42

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;

когда
Код:

var tmp:String = "0x" + snap.getPixel (a, b).toString (16);
делает то же самое, а операция в несколько раз меньше.
2. Какой смысл вообще переводить в строку? Байт от этого будет только больше
3. В сети достаточно примеров таких преобразований. Лучше поискать уже готовые коды.

etc 28.07.2007 11:31

Я бы сказал, что в шестнадцатиричной строке цвета компоненты необязательно всегда два символа. Этот момент тут пропущен, в итоге на некоторых пикселях мы получим фигню.

И обработку надо делать на onEnterFrame, либо по таймеру.


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

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