Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Создание картинки из массива байтов (http://www.flasher.ru/forum/showthread.php?t=88339)

yana_flash 21.11.2006 18:37

Создание картинки из массива байтов
 
Можно ли на флэше (AS3) стандартными методами решить следующую задачу? Флэш-клиент через сокет-соединение получает в виде набора байтов картинку в формате jpg/png. Могу ли я, приняв массив байтов, создать из него собственно картинку?

etc 21.11.2006 19:18

Да, можно.

john 22.11.2006 07:00

погляди flash.display.Loader там есть метод loadBytes(byteArray:ByteArray)
далее создаем
flash.display.Bitmap(loader.content) и радуемся
сам не пробовал, но из хелпа это следует....

john 22.11.2006 07:09

о, я напутал, не из массива, а в массив..
ну тогда BitmapData.setPixels(rect:Rectangle, inputByteArray:ByteArray):void
но тогда нужно знать размер картинки, как я понимаю.
в общем BitmapData, Bitmap и Loader если грузить постом..... если нет, то через ByteArray сначала создать BitmapData а далее ее превращать в Bitmap

MerlinTwi 22.11.2006 13:46

Типа так:
Код:

package {
        import flash.display.*;
        import flash.net.*;
        import flash.events.*;
        import flash.utils.*;
       
    public class Test extends Sprite {
               
        public function Test(){
                        // Получаем файл jpg-картинки в виде байтов
                        var loader:URLLoader;
                        loader = new URLLoader( new URLRequest("image.jpg") );
                        loader.dataFormat = URLLoaderDataFormat.BINARY;
                        loader.addEventListener(IOErrorEvent.IO_ERROR, loadError);
                        loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, loadError);
                        loader.addEventListener(Event.COMPLETE, loadComplete);
        }
               
                protected function loadComplete(event:Event):void {
                        var loader:URLLoader = event.currentTarget as URLLoader;
                        trace("Скачано "+Math.round(uint(loader.bytesLoaded)/1024)+"кб.");
                        // содержимое в байтах
                        var b:ByteArray = loader.data;
                        // превращаем в картинку
                        var img:Loader = new Loader();
                        img.loadBytes(b);
                        // добавляем картику на сцену
                        addChild(img);
                }
                protected function loadError(event:ErrorEvent):void {
                        trace("loadError. "+event);
                }
               
    }
}

Здесь я картинку считал из файла, в вашем случае ByteArray придет по сокету.

yana_flash 22.11.2006 14:37

Большое спасибо за пример кода!


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

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