最近项目需要一个拍照的功能,在网上搜了好久都没有一些很好的解决方法,有人提供了,但不太全,这里我选贴出我参照的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.IO; 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"; //Response.ContentType = "image/gif"; //MemoryStream str = new MemoryStream(); System.Drawing.Imaging.ImageFormat iFormat = new System.Drawing.Imaging.ImageFormat(new Guid()); //this.DrawImageFromFlashUploader(50, 50, rgbArray).Save(str, System.Drawing.Imaging.ImageFormat.Gif); //byte[] byteArray = new byte[str.Length]; //int iii = str.Read(byteArray, 0, (int)str.Length); //Response.BinaryWrite(byteArray); //Response.Write("aaaaaa"); //Response.End(); //Page.RegisterStartupScript } } 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; } } }
希望看到这贴子的人,对你有帮助, 我干脆也打包上传算了, 还没搞清楚怎么上传!