最近項目需要一個拍照的功能,在網上搜了好久都沒有一些很好的解決方案,有人提供了,但不太全,這裡我選貼出我參照的URL(http://www.aspstat.com/69), 我將它綜合了其它一些代碼, 用flash8做了一個. 代碼如下:
var my_cam:Camera = Camera.get();var my_video:Video;my_video.attachVideo(my_cam);var camera_lbl:mx.controls.Label;var cameras_cb:mx.controls.ComboBox;camera_lbl.text = my_cam.name;cameras_cb.dataProvider = Camera.names;function changeCamera():Void { my_cam = Camera.get(cameras_cb.selectedIndex); my_video.attachVideo(my_cam); camera_lbl.text = my_cam.name;}cameras_cb.addEventListener("change", changeCamera);camera_lbl.setStyle("fontSize", 9);cameras_cb.setStyle("fontSize", 9);//init variable photow = new Number(50); photoh = new Number(50);my_cam.setMode(photow, photoh, 10, true);//該對象用於實現發送資料到網頁可get或post var lv:LoadVars; lv = new LoadVars(); btnSavePic.onRelease = function(){ saveCamera(); //getURL("http://localhost/CaptureAndSignatureWebApp/pageb.aspx", "_blank", "GET");} function saveCamera(){ //建立一個bitmapdate對象並擷取video上的映像資訊 lv.bm = new flash.display.BitmapData(photow, photoh,true, 0); lv.bm.draw(my_video); //photoPreview是在情境中的一個Movie clip執行個體,用於輸出bitmapdate實現照片預纜 photoPreview.attachBitmap(lv.bm, 1);photoPreview._width=50;photoPreview._height=50;trace(lv.bm.height); trace(lv.bm.width); //getURL("http://www.macromedia.com", "_blank", "GET");}btnUpload.onRelease = function(){SendPic();}btn1.onRelease = function(){SendPic2();}function SendPic2(){getURL("http://localhost/CaptureAndSignatureWebApp/pageb.aspx?aa=aabb", "_blank", "GET");}function SendPic(){ //loading._visible =true; //getURL("http://localhost/CaptureAndSignatureWebApp/pageb.aspx?aa=aabb", "_blank", "GET"); //讀取圖片矩形範圍的像素資訊,並以字串的形式串連起來 begin i = lv.bm.height; trace("i: " + i.toString()); j = lv.bm.width; trace("j: " + j.toString());//trace("a: " + i.toString());//trace("b: " + j.toString()); rgb_array = ""; for (var m = i - 1; m >= 0; m--) //for (y = 10 - 1; y >= 0; y--) { trace(rgb_array); for (var n = 0; n < j; n ++) //for (x = 0; x < 10; x++) { trace("m: " + m.toString());trace("n: " + n.toString()); color = lv.bm.getPixel(m, n).toString(16); trace(color);trace(rgb_array); rgb_array = rgb_array + (color + ","); } // end of for //trace(rgb_array); } // end of for lv.height = i; lv.width = j; lv.rgb_array = rgb_array; camera_lbl.text = rgb_array;getURL("http://localhost/CaptureAndSignatureWebApp/pageb.aspx?passVal=1", "_blank", "POST"); //讀取圖片矩形範圍的像素資訊,並以字串的形式串連起來 end //getURL("javascript:alert('Step_1')"); //發送到要處理的頁面URL,可以在頁面通過Request.Form["名稱"]擷取值,如:Request.Form["rgb_array"] //lv.sendAndLoad("http://localhost/CaptureAndSignatureWebApp/pageb.aspx", lv, "POST"); //當頁面返回資訊即頁面處理完成後,觸發的行為 /* lv.onLoad = function (success) { if (success) { //跳轉到其他頁面 getURL("http://localhost/CaptureAndSignatureWebApp/pageb.aspx", "_self"); }else{getURL("javascript:alert('Not Success')"); } }*/}
ASP.net的原始碼如下:
using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Drawing;namespace CaptureAndSignatureWebApp{ public partial class pageb : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //string[] rgbArray = new string[] { Request.Form["rgb_array"] }; //this.DrawImageFromFlashUploader(240, 140, rgbArray).Save("images/1.bmp"); //this.Image1.ImageUrl = "images/1.bmp"; } protected override void OnPreInit(EventArgs e) { base.OnPreInit(e); string ss = ""; if (Request.Form.Count > 0) { //ss = Request.QueryString["passVal"]; ss = Request.Form["rgb_array"]; this.Label1.Text = ss; string[] rgbArray = ss.Split(new char[] { ',' }); this.DrawImageFromFlashUploader(50, 50, rgbArray).Save(@"E:/Work/ODMS/SCAAS/技術痛點/CaptureAndSignatureWebApp/CaptureAndSignatureWebApp/images/1.bmp"); //this.Image1.ImageUrl = @"~E:/Work/ODMS/SCAAS/技術痛點/CaptureAndSignatureWebApp/CaptureAndSignatureWebApp/images/1.bmp"; this.IMG1.Src = @"images/1.bmp"; } } public System.Drawing.Bitmap DrawImageFromFlashUploader(int width, int height, string[] rgbArray) { System.Drawing.Bitmap bm = new System.Drawing.Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppRgb); int pos = 0; for (int i = bm.Height - 1; i >= 0; i--) { for (int j = 0; j < bm.Width; j++) { bm.SetPixel(j, i, System.Drawing.Color.FromArgb(int.Parse(rgbArray[pos], System.Globalization.NumberStyles.HexNumber))); pos++; } } return bm; } }}希望看到這貼子的人,對你有協助, 我乾脆也打包上傳算了
假如action script裡有標籤或按鈕要實現多語言,可以在裝載這個flash的c#的頁面裡,定義一個javascript變數, 如
var FLASHBTNSAVETEXT = '<%=this.GetLabel("COM_Confirm")%>';
可在action script的root中直接引用.