(Flash) How to save an image file to the user's local drive

| No Comments | No TrackBacks


Sample code

package {
    import flash.display.*;
    import flash.events.*;
    import flash.net.*;
    import flash.utils.ByteArray;
    import com.adobe.images.PNGEncoder;

    public class ImageSaver extends Sprite {

        private var fileReference:FileReference;
        public function ImageSaver() {
            save_btn.addEventListener(MouseEvent.CLICK, h_saveClick);
        }

        public function h_saveClick(evt:MouseEvent):void {
            var b:BitmapData = new BitmapData(100, 100, false, 0xff0000);
            save(b);
        }

        public function save(b:BitmapData):void {
            try {
                var pngBytes:ByteArray= PNGEncoder.encode(b);
                fileReference=new FileReference();
                fileReference.save(pngBytes,"sample.png");
            } catch (e:Error) {
                trace(e);
            }
        }
    }
}


AIR version with File and FileStream object

package {
    import flash.display.*;
    import flash.events.*;
    import flash.filesystem.*;
    import flash.utils.ByteArray;
    import com.adobe.images.PNGEncoder;

    public class ImageSaver extends Sprite {

        private var file:File;
        private var bmpd:BitmapData;

        public function ImageSaver() {
            save_btn.addEventListener(MouseEvent.CLICK, h_saveClick);
        }

        public function h_saveClick(evt:MouseEvent):void {
            var b:BitmapData=new BitmapData(100,100,false,0xff0000);
            save(b);
        }

        public function save(b:BitmapData):void {
            bmpd=b;
            file=new File(File.desktopDirectory.url+"/sample.png");
            file.addEventListener(Event.SELECT,h_select);
            file.browseForSave("save");
        }
        private function h_select(evt:Event):void {
            try {
                var pngBytes:ByteArray=PNGEncoder.encode(bmpd);
                var stream:FileStream = new FileStream( );
                stream.open(file, FileMode.WRITE);
                stream.writeBytes(pngBytes, 0, pngBytes.length);
                stream.close( );
            } catch (e:Error) {
                trace(e);
            }
        }
    }
}

No TrackBacks

TrackBack URL: http://www.kynd.info/cp-bin/mt/mt-tb.cgi/110

Leave a comment