Uploader.as 2.87 KB
/**
 * @author tuomari
 */
package fi.insomnia.camuploader {
	import flash.display.*;
	import flash.events.MouseEvent;
	import flash.text.*;
	import flash.media.Video;
	import flash.media.Camera;
 	import flash.geom.Matrix;
 	import flash.utils.ByteArray;
 	import flash.net.URLRequest;
 	import flash.net.URLLoader;
 	import flash.net.URLRequestMethod;
 	import flash.net.URLRequestHeader;
 	import flash.net.URLLoaderDataFormat;
 	import mx.graphics.codec.PNGEncoder;
 	import flash.display.StageScaleMode;
 	
	public class Uploader extends Sprite {
    private var button:Sprite = new Sprite();
 	private var video:Video;
 	private var camera:Camera;
 	private var userid:String;
 	private var origin:String;
 	
 	
	public function Uploader() {
		
        // stage.scaleMode = StageScaleMode.NO_SCALE;
		camera= Camera.getCamera();
		camera.setQuality(0, 100);
		camera.setMode(320,240,25,true);
		video = new Video(); 
		video.width = 320;
		video.height = 240;
		video.attachCamera(camera);
		addChild(video);
		
		
        button.graphics.clear();
        button.graphics.beginFill(0xD4D4D4); // grey color
        button.graphics.drawRoundRect(55, 250, 80, 25, 10, 10); // x, y, width, height, ellipseW, ellipseH
        button.graphics.endFill();
        var textLabel:TextField = new TextField()
        
        userid = this.root.loaderInfo.parameters["userid"]
        origin = this.root.loaderInfo.parameters["origin"]
        
        textLabel.text = "Ota kuva id: " + userid;
        textLabel.x = 70;
        textLabel.y = 255;
        textLabel.selectable = false;
		button.addEventListener(MouseEvent.CLICK, takeSnapshot);
		
        button.addChild(textLabel)
		addChild(button);
	 	var overlay:Sprite = new Sprite();
	 	overlay.graphics.clear();
	 	overlay.graphics.beginFill(0xFFFFFF);
	 	overlay.graphics.drawRect(160,0,320,240);
		overlay.graphics.endFill();	 	
	 	addChild(overlay);
	 	
		
		}
		
		
		private function takeSnapshot(event:MouseEvent):void
		{
			var snapshot:BitmapData =new BitmapData(160,240);
			
			snapshot.draw(video,new Matrix());
			var naama : ByteArray = new PNGEncoder().encode( snapshot );	
			trace("Took snapshot!");
			// set up the request & headers for the image upload;
			var urlRequest : URLRequest = new URLRequest();
			urlRequest.url = origin+ '/UploadServlet/' + userid;
			urlRequest.contentType = 'multipart/form-data; boundary=' + UploadPostHelper.getBoundary();
			urlRequest.method = URLRequestMethod.POST;
			urlRequest.data = UploadPostHelper.getPostData( 'image.png', naama );
			urlRequest.requestHeaders.push( new URLRequestHeader( 'Cache-Control', 'no-cache' ) );

			// create the image loader & send the image to the server;
			var urlLoader : URLLoader = new URLLoader();
			urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
			urlLoader.load( urlRequest );
			trace("Image sent");
			button.y = button.y+1;
			video.attachCamera(null);
		}
		
		
		
	}

}