forked from: Test that uses Face.com

by mtok forked from Test that uses Face.com (diff: 26)
♥0 | Line 69 | Modified 2010-06-14 03:25:49 | MIT License
play

ActionScript3 source code

/**
 * Copyright mtok ( http://wonderfl.net/user/mtok )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/yIsK
 */

// forked from yd_niku's Test that uses Face.com
package {
    import flash.display.*;
    import flash.events.*;
    import flash.geom.*;
    import flash.net.*;
    import flash.system.*;
    import flash.text.*;
    
    import com.adobe.serialization.json.JSON;
    
    public class FlashTest extends Sprite {
        public function FlashTest() {
            var loader:URLLoader = new URLLoader();
            var req:URLRequest = new URLRequest("http://api.face.com/faces/detect.format");
            
            req.data = new URLVariables();
            req.data.api_key = "55d5d7d310d7cb2b2843e744dcdb58a1";
            req.data.urls = "http://www.webmasterpro.de/portal/news/2008/08/27/verkehrte-welt-jetzt-verklagt-psystar-apple.html/image/steve-jobs.jpg";
            //req.data.urls = "http://maclalalaannex.files.wordpress.com/2007/12/steve-jobs-at-nobel-prize.jpg";
            //req.data.urls = "http://www.cbsnews.com/i/tim//2010/06/01/image6539419x.jpg";
            //req.data.urls = "http://codigopgt.files.wordpress.com/2008/08/steve-jobs-picture-1.jpg";
            //req.data.urls = "http://madsenblog.dk/wordpress/wp-content/uploads/steve_jobs_photos.jpg";
            //req.data.urls = "http://image.blog.livedoor.jp/lepa_sela_lepo_gore/imgs/b/c/bca1728f.jpg";
            //req.data.urls = "http://www.allnewsmac.com/blog/wp-content/uploads/2010/04/time_steve_jobs.png";
            //req.data.urls = "http://images1.fanpop.com/images/image_uploads/Two-little-Piggies-pigs-1078267_1920_1440.jpg";
            //req.data.urls = "http://scrapetv.com/News/News%20Pages/Technology/images/steve-jobs-with-iphone-2.jpg";
            req.data.api_secret = "2031d04ebb227a11ebf3187379383560";
            
            loader.addEventListener(Event.COMPLETE,completeHandler );
            loader.load(req);
        }
        
        
        private function completeHandler(e:Event):void{
            var loader:URLLoader = e.target as URLLoader;
            
            var text:TextField = new TextField();
            text.width = text.height = 465;
            text.text = loader.data.split(",").join(",\n");
            
            
            data = JSON.decode(loader.data);
            var img:Loader = new Loader();
            img.contentLoaderInfo.addEventListener(Event.COMPLETE, loadedImageHandler );
            img.load(new URLRequest(data.photos[0].url));
            addChild(img);
            
            
            var canvas:Shape = new Shape();
            addChild(canvas);
            
            _photoWidth = data.photos[0].width;
            _photoheight = data.photos[0].height;
            
            var tags:Array = data.photos[0].tags;
            for( var i:int=0; i< tags.length; ++i ){
            var tag:Object= tags[i];
            
            drawPoint( canvas.graphics, getPoint(tag.center), 0xFF0000, 15 );
            drawPoint( canvas.graphics, getPoint(tag.eye_left), 0x0000ff, 10 );
            drawPoint( canvas.graphics, getPoint(tag.eye_right), 0x0000FF, 10 );
            //drawPoint( canvas.graphics, getPoint(tag.ear_left), 0x00, 7 );
            //drawPoint( canvas.graphics, getPoint(tag.ear_right), 0x00, 7 );
            drawPoint( canvas.graphics, getPoint(tag.nose), 0x00ff00, 4 );
            
            var mouth:Vector.<Point> = new Vector.<Point>();
            mouth.push( getPoint(tag.mouth_left), getPoint(tag.mouth_center), getPoint(tag.mouth_right) );
            drawLines( canvas.graphics, mouth, 0xFF00 );
  
            addChild(text);
            }
        }
        
        private var _photoWidth :Number;
        private var _photoheight:Number;
            
        private function drawPoint(g:Graphics, p:Point, color:uint, radius:Number = 2 ):void{
            g.lineStyle(1);
            g.beginFill(color);
            g.drawCircle( p.x, p.y, radius);
            g.endFill();
        }
        
        private function drawLines( g:Graphics, points:Vector.<Point>, color:uint ):void{
            g.lineStyle(3, color );
            g.moveTo(points[0].x, points[0].y);
            for each( var p:Point in points ) {
                g.lineTo(p.x,p.y);
            }
        }
        
        private function getPoint( p:Object ):Point{
            return new Point( p.x*0.01*_photoWidth, p.y*0.01*_photoheight);
        }
        private var data:Object;
        private function loadedImageHandler(e:Event):void{
            
            
        }
    }
}