flash線上拍照並上傳(ASP.NET)

來源:互聯網
上載者:User

最近項目需要一個拍照的功能,在網上搜了好久都沒有一些很好的解決方案,有人提供了,但不太全,這裡我選貼出我參照的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中直接引用.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.