[AS3]as3代码实现调用摄像头进行拍照的范例源代码
[AS3]as3代码实现调用摄像头进行拍照的范例源代码,as3拍照功能
[AS3]as3代码实现调用摄像头进行拍照的范例源代码,as3拍照功能
- package
- {
- import flash.display.Loader;
- import flash.display.Sprite;
- import flash.geom.ColorTransform;
- import flash.geom.Matrix;
- import flash.geom.Point;
- import flash.geom.Rectangle;
- import flash.media.Camera;
- import flash.media.Video;
- import flash.events.Event;
- import flash.display.SimpleButton;
- import fl.controls.Button;
- import flash.events.MouseEvent;
- import flash.events.ActivityEvent;
- import flash.display.BitmapData;
- import flash.display.Bitmap;
- import flash.display.StageScaleMode;
- import flash.events.DataEvent;
- import flash.net.FileFilter;
- import flash.net.FileReference;
- import flash.utils.ByteArray;
- import com.adobe.images.PNGEncoder;
- import flash.net.URLLoader;
- import flash.net.URLRequest;
- import flash.events.IOErrorEvent;
- import flash.net.URLRequestMethod;
- import flash.events.ProgressEvent;
- import cn.mococo.component.Alert;
- import cn.mococo.DataManager;
- import flash.net.URLLoaderDataFormat;
- import flash.display.MovieClip;
- import flash.utils.getTimer;
- public class main extends Sprite
- {
- private var camera:Camera;
- private var video:Video;
- private var takePhotoBtn:Button;
- private var savePhotoBtn:Button;
- private var bitmap:Bitmap;
- private var bitmapdata:BitmapData;
- private var vidBmpPoint:Point;
- private var vidBmpRect:Rectangle;
- private var jpgencoder:PNGEncoder;// = new JPGEncoder(80);
- private var bytesArr:ByteArray;
- private var webURL:String = 'http://localhost/as3test/';
- public function main()
- {
- DataManager.STAGE_ROOT = this;
- addEventListener(Event.ADDED_TO_STAGE, init);
- }
- private var w:int = 160;
- private var h:int = 120;
- private var file:FileReference;
- private var fileFilter:FileFilter;
- private function init(e:Event):void
- {
- if ( e.type == Event.ADDED_TO_STAGE )
- {
- stage.scaleMode = StageScaleMode.NO_SCALE;
- removeEventListener(Event.ADDED_TO_STAGE, init);
- camera = Camera.getCamera();
- camera.addEventListener(ActivityEvent.ACTIVITY, onActivity);
- camera.setMode(w, h, 20, true);
- camera.setQuality(0, 100);
- video = new Video(w,h);
- video.attachCamera(camera);
- video.smoothing = true;
- video.x = 350
- video.y = 30;
- addChild(video);
- takePhotoBtn = new Button();
- addChild(takePhotoBtn);
- takePhotoBtn.x = 30;
- takePhotoBtn.y = 10;
- takePhotoBtn.label = 'Take a photo!';
- takePhotoBtn.addEventListener(MouseEvent.CLICK, takePhoto);
- savePhotoBtn = new Button();
- addChild(savePhotoBtn);
- savePhotoBtn.x = 130;
- savePhotoBtn.y = 10;
- savePhotoBtn.label = 'Save this photo!';
- savePhotoBtn.addEventListener(MouseEvent.CLICK, takePhoto);
- }
- }
- private function selectHandler(e:Event):void
- {
- var file:FileReference = FileReference(e.target);
- trace("selectHandler: name=" + file.name);
- var uploadURL:URLRequest = new URLRequest(webURL + "upload.php");
- file.upload(uploadURL);
- }
- private var ploader:Loader;
- private function loadedHandler(e:DataEvent):void
- {
- trace('ok: ' + String(e.data).length);
- var s:String = String(e.data).substr(1);
- ploader = new Loader();
- ploader.contentLoaderInfo.addEventListener(Event.COMPLETE, addPicture);
- trace('http://localhost/as3test/' + s);
- ploader.load(new URLRequest('http://localhost/as3test/' + s));
- }
- private function loaded(e:Event):void
- {
- trace('loaded : ' + e.currentTarget);
- }
- private function addPicture(e:Event):void
- {
- trace('addPicture');
- addChild(e.currentTarget.content);
- }
- private function onActivity(e:ActivityEvent):void
- {
- //trace(e.activating);
- }
- import flash.display.BlendMode;
- private function takePhoto(e:MouseEvent):void
- {
- if ( e.currentTarget == takePhotoBtn )
- {
- bitmapdata = new BitmapData(150, 150, true, 0xff0000);
- bitmapdata.draw(video);
- bitmap = new Bitmap(bitmapdata);
- addChild(bitmap);
- bitmap.x = 350;// 60 + camera.width;
- bitmap.y = 230;
- }
- else
- {
- var mybitmapdata:BitmapData = new BitmapData(110, 110, true, 0xff0000);
- mybitmapdata.copyPixels(bitmap.bitmapData, new Rectangle(20, 20, 100, 100),new Point());
- bytesArr = PNGEncoder.encode(mybitmapdata);
- var request:URLRequest = new URLRequest();
- //data值就为图片编码数据ByteArray;
- request.data = bytesArr;
- request.url = webURL + "upload.php?FileName=" + getTimer();
- request.method = URLRequestMethod.POST;
- //这个是关键,内容类型必须是下面文件流形式;
- request.contentType = "application/octet-stream";
- var loader:URLLoader = new URLLoader();
- loader.dataFormat = URLLoaderDataFormat.BINARY;
- loader.addEventListener(Event.COMPLETE, completeHandler);
- loader.addEventListener(ProgressEvent.PROGRESS, progressHandler);
- loader.load(request);
- }
- }
- private function progressHandler(e:ProgressEvent):void
- {
- //trace(int(Math.round(e.bytesLoaded / e.bytesTotal * 100)));
- }
- private function completeHandler(e:Event):void
- {
- var fileName:String = String(e.currentTarget.data);// + '.jpg';
- trace('fileName: ' + fileName);
- Alert.show('保存成功');
- var downloadURL:URLRequest = new URLRequest();
- downloadURL.url = webURL + fileName + "?" + Math.random();
- trace('downloadURL: ' + downloadURL.url);
- file = new FileReference();
- //file.download(downloadURL);Alert.show('保存成功');
- }
- }
- }
来源 http://bbs.9ria.com/thread-24194-1-1.html
热门文章推荐
- [HLS]做自己的m3u8点播系统使用HTTP Live Streaming(HLS技术)
- [FMS]FMS流媒体服务器配置与使用相关的介绍
- [AS3]什么是M3U8,与HTML5的区别是什么
- AS2.0 让flash自适应全屏,并且不自动缩放
- [AS3]as3.0的sound类常用技巧整理
- [AS3]as3与ByteArray详解、ByteArray介绍、ByteArray用法
- 关于RTMP,RTMPT,RTMPS,RTMPE,RTMPTE协议的介绍
- [JS]分享浏览器弹出窗口不被拦截JS示例
请稍候...