forked from: Test that uses Face.com
forked from Test that uses Face.com (diff: 26)
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{
}
}
}