07
Dec
07

Converting an ImageSnapshot object into a Base-64 encoded string in Flex 3

The following example shows how you can convert an ImageSnapshot object into a Base-64 encoded string using Flex 3’s cleverly named encodeImageAsBase64() method.

Full code after the jump.

View MXML

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2007/12/07/converting-an-imagesnapshot-object-into-a-base-64-encoded-string-in-flex-3/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white">

    <mx:Script>
        <![CDATA[
            import flash.events.FocusEvent;
            import flash.system.System;
            import mx.graphics.ImageSnapshot;

            private function button_click(evt:MouseEvent):void {
                var ohSnap:ImageSnapshot = ImageSnapshot.captureImage(img);
                textArea.text = ImageSnapshot.encodeImageAsBase64(ohSnap);
            }

            private function textArea_focusIn(evt:FocusEvent):void {
                textArea.setSelection(0, textArea.text.length);
            }
        ]]>
    </mx:Script>

    <mx:ApplicationControlBar dock="true">
        <mx:Button label="Capture and encode"
                click="button_click(event);" />
    </mx:ApplicationControlBar>

    <mx:Form>
        <mx:FormItem label="source:">
            <mx:Image id="img"
                    source="@Embed('images/flex_logo.jpg')" />
        </mx:FormItem>
        <mx:FormItem label="Base64:">
            <mx:TextArea id="textArea"
                    editable="false"
                    showScrollTips="true"
                    width="320"
                    height="160"
                    focusIn="textArea_focusIn(event);" />
        </mx:FormItem>
        <mx:FormItem>
            <mx:Button label="Copy to clipboard"
                    enabled="{textArea.text.length > 0}"
                    click="System.setClipboard(textArea.text);" />
        </mx:FormItem>
    </mx:Form>

</mx:Application>

View source is enabled in the following example.


3 Responses to “Converting an ImageSnapshot object into a Base-64 encoded string in Flex 3”


  1. 1 Matt Apr 9th, 2008 at 6:41 am

    Nice, but how can I copy an image to the clipboard and paste that image into say, word or Excel or any other program that can display a JPG file?? I guess I don’t see what this buys me… having the image as text based Base64 encoded?

  2. 2 Nicholas Aug 7th, 2008 at 9:01 am

    Matt,

    I, too, have wondered how Base64 encoding benefits a developer. The text has a larger file size than the image itself, and it has to be decoded to be useful. The only benefit I can see offhand is that Base64 text can be embedded in an xml file, which would be useful for small images that people didn’t want to host somewhere. It would bloat the xml file somewhat, but for small images it wouldn’t be too bad.

    Can someone more knowledgeable in this area shed some light on the issue?

  3. 3 Anonymous Jan 5th, 2009 at 8:59 am

    I am using encoded images to send it via Soap to a php server.
    php then creates the actual images and place them on a server. then its available for flash to access it

Leave a Reply

This blog is terrible at eating HTML tags. If you plan on posting code/XML, please escape your "<" characters as "&lt;" and your ">" characters as "&gt;".




December 2007
M T W T F S S
« Nov   Jan »
 12
3456789
10111213141516
17181920212223
24252627282930
31  

Badge Farm

  • Firefox 2
  • Powered by Redoable 1.2
  • Feeds burnt by Feedburner
  • Feed