Alex
Alex

Reputation: 2219

Send ByteArray to JavaScript

How to send a jpg image as ByteArray from as3 to javascript? And how to convert ByteArray to image in javascript?

Upvotes: 9

Views: 13087

Answers (3)

1.21 gigawatts
1.21 gigawatts

Reputation: 17726

There is a method in this class that does that:

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

calling

var data:String = DisplayObjectUtils.getBase64ImageDataString(); 

will return this string:

data:image/png;base64,...

You then set the src of an img in html to that value.

Upvotes: 0

James Fassett
James Fassett

Reputation: 41034

Take your DisplayObject (Sprite/MovieClip/whatever) and convert it to a BitmapData:

myBitmapData.draw(mySprite);

Convert that to a PNG using adobe's AS3CoreLib

myByteArray = PNGEncoder.encode(myBitmapData);

Convert that to Base64 using Flex's Base64Encoder:

myBase64Encoder.encodeBytes(myByteArray);

Then export actionscript variables to Javascript using ExternalInterface.

Upvotes: 4

EricLaw
EricLaw

Reputation: 57075

The JavaScript and DOM implementations of current web browsers don't really have good mechanisms for doing this sort of thing.

Your best bet is to have your AS3 return a DATA protocol URI with a base64-encoded version of the image. Modern browsers (IE8+, FF2+, etc) will accept a DATA URI as the SRC of an IMG tag and will render the image contained therein.

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

You'll have to have a AS3 expert explain how to turn an byte-array into a base64-encoded string, but it cannot be that hard.

Upvotes: 2

Related Questions