Advertisement
Guest User

Get base 64 data from image

a guest
May 23rd, 2014
519
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2.        
  3.         /**
  4.          * Get data URI from object.
  5.          *
  6.          * Encoding to JPG took 2000ms in some cases where PNG took 200ms.
  7.          * I have not extensively tested this but it seems to be 10x faster
  8.          * than JPG.
  9.          * */
  10.         public function getDataURI(target:Object, type:String = "png"):String {
  11.             var output:String;
  12.            
  13.             if (type.toLowerCase()=="jpg") {
  14.                 type = "jpeg";
  15.             }
  16.            
  17.             output = "data:image/" + type + ";base64," + getBase64ImageData(target, type);
  18.            
  19.             return output;
  20.         }
  21.        
  22.         /**
  23.          * Returns base64 image string.
  24.          *
  25.          * Encoding to JPG took 2000ms in some cases where PNG took 200ms.
  26.          * I have not extensively tested this but it seems to be 10x faster
  27.          * than JPG.
  28.          *
  29.          * Performance:
  30.          * get snapshot. time=14
  31.          * encode to png. time=336 // encode to jpg. time=2000
  32.          * encode to base 64. time=35
  33.          * */
  34.         public function getBase64ImageData(target:Object, type:String = "png", checkCache:Boolean = false):String {
  35.             var component:IUIComponent = target as IUIComponent;
  36.             var bitmapData:BitmapData;
  37.             var byteArray:ByteArray;
  38.             var base64:Base64Encoder;
  39.            
  40.             if (base64BitmapCache[target] && checkCache) {
  41.                 return base64BitmapCache[target];
  42.             }
  43.            
  44.             //var time:int = getTimer();
  45.             if (component) {
  46.                 bitmapData = BitmapUtil.getSnapshot(component);
  47.             }
  48.             else if (target is DisplayObject) {
  49.                 bitmapData = DisplayObjectUtils.getBitmapDataSnapshot2(target as DisplayObject);
  50.             }
  51.             else if (target is BitmapData) {
  52.                 bitmapData = target as BitmapData;
  53.             }
  54.             else {
  55.                 return null;
  56.             }
  57.            
  58.             //trace ("get snapshot. time=" + (getTimer()-time));
  59.             //time = getTimer();
  60.             if (type=="png") {
  61.                 if (!pngEncoder) {
  62.                     pngEncoder = new PNGEncoder();
  63.                 }
  64.                
  65.                 byteArray = pngEncoder.encode(bitmapData);
  66.             }
  67.             else if (type=="jpg" || type=="jpeg") {
  68.                
  69.                 if (!jpegEncoder) {
  70.                     jpegEncoder = new JPEGEncoder();
  71.                 }
  72.                
  73.                 byteArray = jpegEncoder.encode(bitmapData);
  74.             }
  75.             else {
  76.                 // raw bitmap image data
  77.                 byteArray = bitmapData.getPixels(new Rectangle(0, 0, bitmapData.width, bitmapData.height));
  78.             }
  79.            
  80.             //trace ("encode to png. time=" + (getTimer()-time));
  81.             //time = getTimer();
  82.            
  83.             if (!base64) {
  84.                 base64 = new Base64Encoder();
  85.             }
  86.            
  87.             base64.encodeBytes(byteArray);
  88.             //trace(base64.toString());
  89.            
  90.             var results:String = base64.toString();
  91.             //trace ("encode to base 64. time=" + (getTimer()-time));
  92.            
  93.             base64BitmapCache[target] = results;
  94.            
  95.             return results;
  96.         }
  97.        
  98.         public var base64BitmapCache:Dictionary = new Dictionary(true)
  99.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement