使用Flash AIR創建桌面無提示拍照應用示例打賞

項目關系需要創建能夠拍照的桌面應用,因為比起C++、C#,Flash略為熟悉,就采用了AIR。下面是今日來測試無誤的結果。

因為項目中涉及其他內容,不想暴露拍照按鈕給用戶,所以預留了savePic方法供需要時調用。因為是AIR應用,可以直接操作本地文件,雖然功能有限,但單純的保存圖片還是夠用的。下面即為調用方法直接保存圖片的簡單示例,不是采用網上多數的彈出保存框形式。時間關系,不多做介紹,僅記錄,有不清楚的可以留言交流。

package
{
	import flash.media.*;
	import flash.display.*;
	import flash.net.*;
	//import fl.controls.*;
	import flash.events.*;
	import flash.geom.*;
	import flash.filesystem.*;
	import com.adobe.images.JPGEncoder;
	public class PhotoSnap extends Sprite
	{
		
		private static var cam:Camera;
		private static var vid:Video;
		private static var ps:PhotoSnap;
		public static function getInstance(container:DisplayObjectContainer):PhotoSnap
		{
			if(ps==null){
				ps=new PhotoSnap(container);
			}else{
				ps.showCamera(container);
			}
			return ps;
		}
		public function PhotoSnap(container:DisplayObjectContainer):void
		{
			cam = Camera.getCamera();
			//攝像頭視窗大小
			cam.setMode(800, 600, 24);
			vid = new Video(600,550);
			vid.attachCamera(cam);
			vid.smoothing=true;
			vid.x=-(container.width/2);
			vid.y=-(container.height/2);
			showCamera(container);
			//button.addEventListener(MouseEvent.CLICK, savepic);
			
		}
		private function showCamera(container:DisplayObjectContainer):void
		{
			container.addChild(vid);
		}
		public function savePic(event:MouseEvent)
		{
			var bitmapData = new BitmapData(vid.width,vid.height);
			var matrix:Matrix=new Matrix();
			//關鍵處,該處的值應該是由video的大小和camera設置的大小決定的.
			matrix.scale(1,1);
			bitmapData.draw(vid,matrix);
			//var file:FileReference = new FileReference();
			var jpg:JPGEncoder = new JPGEncoder(100);
			//file.save(jpg.encode(jpgSource),"b.jpg");  
			var f:FileStream=new FileStream();
			var file:File=new File(File.applicationDirectory.resolvePath('data/'+Math.random().toString().substring(2)+".jpg").nativePath);
			f.openAsync(file,FileMode.WRITE);
			f.writeBytes(jpg.encode(bitmapData));
		}  
	}
}

PS:實際應用中因為不完全是AS項目,采用Flash編程,所以沒有寫包名,直接默認package。AS項目中可以借鑒。另外還有一個尚未解決的問題,就是Camera.getCamrea()獲取到本地攝像頭后若程序不再使用此攝像頭,無法釋放,找了很多資料沒看到相關API,不知道為什么,不過按照正常情況考慮,一般拍照程序都是關閉才釋放攝像頭的,對于我要做的這種程序一直運行不釋放的,可能需要另尋他徑了。

使用Flash AIR創建桌面無提示拍照應用示例
文章《使用Flash AIR創建桌面無提示拍照應用示例》二維碼
  • 微信打賞
  • 支付寶打賞

已有2條評論

  1. 訊特百家樂開戶

    原來如此呀··謝謝啦!http://www.xm58tc.com

    2014-02-24 16:26 回復
  2. 如何減肥

    2013-11-09 18:16 回復

(必填)

(必填)

(可選)

黑龙江22选5开奖