Отправить ByteArray на JavaScript

Как отправить изображение jpg как ByteArray от as3 до javascript? И как конвертировать ByteArray для изображения в javascript?

3 ответов


реализации JavaScript и DOM текущих веб-браузеров на самом деле не имеют хороших механизмов для выполнения такого рода вещей.

лучше всего, чтобы ваш AS3 вернул URI протокола данных с версией изображения в кодировке base64. Современные браузеры (IE8+, FF2+ и т. д.) примут URI данных в качестве SRC тега IMG и отобразят содержащееся в нем изображение.

http://en.wikipedia.org/wiki/Data_URI_scheme

вам придется попросите эксперта AS3 объяснить, как превратить байтовый массив в строку с кодировкой base64, но это не может быть так сложно.


взять DisplayObject (Sprite/MovieClip / whatever) и преобразовать его в BitmapData:

myBitmapData.draw(mySprite);

преобразуйте это в PNG с помощью adobe AS3CoreLib

myByteArray = PNGEncoder.encode(myBitmapData);

преобразовать в base64 с помощью Flex на Base64Encoder:

myBase64Encoder.encodeBytes(myByteArray);

затем экспорт переменных actionscript в Javascript используя метода ExternalInterface.


в этом классе есть метод, который делает это:

https://github.com/monkeypunch3/flexcapacitor/blob/master/MainLibrary/src/com/flexcapacitor/utils/DisplayObjectUtils.as

вызов

var data:String = DisplayObjectUtils.getBase64ImageDataString(); 

вернет эту строку:

data:image/png;base64,...

затем вы устанавливаете src img в html на это значение.