·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3代码实现调用摄像头进行拍照的范例源代码

时间:2017-05-22 14:529ria.com
[AS3]as3代码实现调用摄像头进行拍照的范例源代码,as3拍照功能

[AS3]as3代码实现调用摄像头进行拍照的范例源代码,as3拍照功能

  1. package   
  2. { 
  3.          
  4.         import flash.display.Loader; 
  5.         import flash.display.Sprite; 
  6.         import flash.geom.ColorTransform; 
  7.         import flash.geom.Matrix; 
  8.         import flash.geom.Point; 
  9.         import flash.geom.Rectangle; 
  10.         import flash.media.Camera; 
  11.         import flash.media.Video; 
  12.         import flash.events.Event; 
  13.         import flash.display.SimpleButton; 
  14.         import fl.controls.Button; 
  15.         import flash.events.MouseEvent; 
  16.         import flash.events.ActivityEvent; 
  17.         import flash.display.BitmapData; 
  18.         import flash.display.Bitmap; 
  19.         import flash.display.StageScaleMode; 
  20.         import flash.events.DataEvent; 
  21.         import flash.net.FileFilter; 
  22.         import flash.net.FileReference; 
  23.         import flash.utils.ByteArray; 
  24.         import com.adobe.images.PNGEncoder; 
  25.         import flash.net.URLLoader; 
  26.         import flash.net.URLRequest; 
  27.         import flash.events.IOErrorEvent; 
  28.         import flash.net.URLRequestMethod; 
  29.         import flash.events.ProgressEvent; 
  30.         import cn.mococo.component.Alert; 
  31.         import cn.mococo.DataManager; 
  32.         import flash.net.URLLoaderDataFormat; 
  33.         import flash.display.MovieClip; 
  34.         import flash.utils.getTimer; 
  35.          
  36.         public class main extends Sprite 
  37.         { 
  38.                 private var camera:Camera; 
  39.                 private var video:Video; 
  40.                 private var takePhotoBtn:Button; 
  41.                 private var savePhotoBtn:Button; 
  42.                 private var bitmap:Bitmap; 
  43.                 private var bitmapdata:BitmapData; 
  44.                  
  45.                 private var vidBmpPoint:Point; 
  46.         private var vidBmpRect:Rectangle; 
  47.                  
  48.                 private var jpgencoder:PNGEncoder;// = new JPGEncoder(80); 
  49.                 private var bytesArr:ByteArray; 
  50.                 private var webURL:String = 'http://localhost/as3test/'; 
  51.                  
  52.                 public function main()  
  53.                 { 
  54.                         DataManager.STAGE_ROOT = this; 
  55.                         addEventListener(Event.ADDED_TO_STAGE, init); 
  56.                 } 
  57.                  
  58.                 private var w:int = 160; 
  59.                 private var h:int = 120; 
  60.                 private var file:FileReference; 
  61.                 private var fileFilter:FileFilter; 
  62.                  
  63.                 private function init(e:Event):void 
  64.                 { 
  65.                         if ( e.type == Event.ADDED_TO_STAGE ) 
  66.                         { 
  67.                                 stage.scaleMode = StageScaleMode.NO_SCALE; 
  68.                                 removeEventListener(Event.ADDED_TO_STAGE, init); 
  69.                                 camera = Camera.getCamera(); 
  70.                                 camera.addEventListener(ActivityEvent.ACTIVITY, onActivity); 
  71.                                 camera.setMode(w, h, 20, true); 
  72.                                 camera.setQuality(0, 100); 
  73.                                 video = new Video(w,h); 
  74.                                 video.attachCamera(camera); 
  75.                 video.smoothing = true; 
  76.                                 video.x = 350 
  77.                                 video.y = 30; 
  78.                                 addChild(video); 
  79.                                  
  80.                                 takePhotoBtn = new Button(); 
  81.                                 addChild(takePhotoBtn); 
  82.                                 takePhotoBtn.x = 30; 
  83.                                 takePhotoBtn.y = 10; 
  84.                                 takePhotoBtn.label = 'Take a photo!'; 
  85.                                 takePhotoBtn.addEventListener(MouseEvent.CLICK, takePhoto); 
  86.                                  
  87.                                 savePhotoBtn = new Button(); 
  88.                                 addChild(savePhotoBtn); 
  89.                                 savePhotoBtn.x = 130; 
  90.                                 savePhotoBtn.y = 10; 
  91.                                 savePhotoBtn.label = 'Save this photo!'; 
  92.                                 savePhotoBtn.addEventListener(MouseEvent.CLICK, takePhoto); 
  93.                         } 
  94.                 } 
  95.                  
  96.                 private function selectHandler(e:Event):void 
  97.                 { 
  98.                         var file:FileReference = FileReference(e.target); 
  99.             trace("selectHandler: name=" + file.name); 
  100.                         var uploadURL:URLRequest = new URLRequest(webURL + "upload.php"); 
  101.             file.upload(uploadURL); 
  102.                 } 
  103.                  
  104.                 private var ploader:Loader; 
  105.                 private function loadedHandler(e:DataEvent):void 
  106.                 { 
  107.                         trace('ok:  ' + String(e.data).length); 
  108.                         var s:String = String(e.data).substr(1); 
  109.                         ploader = new Loader(); 
  110.                         ploader.contentLoaderInfo.addEventListener(Event.COMPLETE, addPicture); 
  111.                         trace('http://localhost/as3test/' + s); 
  112.                         ploader.load(new URLRequest('http://localhost/as3test/' + s)); 
  113.                 } 
  114.                  
  115.                 private function loaded(e:Event):void 
  116.                 { 
  117.                         trace('loaded : ' + e.currentTarget); 
  118.                 } 
  119.                  
  120.                 private function addPicture(e:Event):void 
  121.                 { 
  122.                         trace('addPicture'); 
  123.                         addChild(e.currentTarget.content); 
  124.                 } 
  125.                  
  126.                 private function onActivity(e:ActivityEvent):void 
  127.                 { 
  128.                         //trace(e.activating); 
  129.                 } 
  130.                  
  131.                 import flash.display.BlendMode; 
  132.                  
  133.                 private function takePhoto(e:MouseEvent):void 
  134.                 { 
  135.                         if ( e.currentTarget == takePhotoBtn ) 
  136.                         { 
  137.                                 bitmapdata = new BitmapData(150, 150, true, 0xff0000); 
  138.                                 bitmapdata.draw(video); 
  139.                                 bitmap = new Bitmap(bitmapdata); 
  140.                                 addChild(bitmap); 
  141.                                 bitmap.x = 350;// 60 + camera.width; 
  142.                                 bitmap.y = 230; 
  143.                         } 
  144.                         else 
  145.                         { 
  146.                                 var mybitmapdata:BitmapData = new BitmapData(110, 110, true, 0xff0000); 
  147.                                 mybitmapdata.copyPixels(bitmap.bitmapData, new Rectangle(20, 20, 100, 100),new Point()); 
  148.                                  
  149.                                 bytesArr = PNGEncoder.encode(mybitmapdata); 
  150.                                 var request:URLRequest = new URLRequest(); 
  151.                                 //data值就为图片编码数据ByteArray; 
  152.                                 request.data = bytesArr; 
  153.                                 request.url = webURL + "upload.php?FileName=" + getTimer(); 
  154.                                 request.method = URLRequestMethod.POST; 
  155.                                 //这个是关键,内容类型必须是下面文件流形式; 
  156.                                 request.contentType = "application/octet-stream"; 
  157.                                 var loader:URLLoader = new URLLoader(); 
  158.                                 loader.dataFormat = URLLoaderDataFormat.BINARY; 
  159.                                 loader.addEventListener(Event.COMPLETE, completeHandler); 
  160.                                 loader.addEventListener(ProgressEvent.PROGRESS, progressHandler);         
  161.                                 loader.load(request);    
  162.                         } 
  163.                 } 
  164.                  
  165.                 private function progressHandler(e:ProgressEvent):void 
  166.                 { 
  167.                         //trace(int(Math.round(e.bytesLoaded / e.bytesTotal * 100))); 
  168.                 } 
  169.                  
  170.                 private function completeHandler(e:Event):void 
  171.                 { 
  172.                         var fileName:String = String(e.currentTarget.data);// + '.jpg'; 
  173.                         trace('fileName: ' + fileName); 
  174.                         Alert.show('保存成功'); 
  175.                         var downloadURL:URLRequest = new URLRequest(); 
  176.             downloadURL.url = webURL + fileName + "?" + Math.random(); 
  177.                         trace('downloadURL: ' + downloadURL.url); 
  178.             file = new FileReference(); 
  179.             //file.download(downloadURL);Alert.show('保存成功'); 
  180.                 } 
  181.         } 
  182.          
  183. } 

来源 http://bbs.9ria.com/thread-24194-1-1.html

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器