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

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

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

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

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

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

热门文章推荐

请稍候...

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

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