用flash获取摄像头照出来的图像变形的问题解决方法

来源:互联网 发布:airpods连接mac 编辑:程序博客网 时间:2024/04/30 14:23

上次的代码发现原来照出来的图像比例有点不对,客户不满意,就查action script关于这些方法的参数的使用,发现,调来调去都不行,在网上查了好久,终于发现一位高手发的贴,我把他的url发出来,顺便也把代码发一下:

URL:

http://www.blueidea.com/tech/multimedia/2005/3116.asp

他的代码是:

1)出现比例出问题前的代码是:

var my_video:Video;my_video._x=100;my_video._y=40;var my_cam:Camera = Camera.get();my_cam.setMode(180, 140, 10, true);my_video.attachVideo(my_cam);shutter.onRelease = function() { myBitmap = new flash.display.BitmapData(180, 240, true, 0); myBitmap.draw(my_video); var tempObj = _root.createEmptyMovieClip("photo", 100); tempObj._x = 300; tempObj._y = 40; tempObj.attachBitmap(myBitmap, 1, "always", true);};
2)修正后是:
var my_video:Video;my_video._x=100;my_video._y=40;var my_cam:Camera = Camera.get();my_cam.setMode(180, 140, 10, true);my_video.attachVideo(my_cam);shutter.onRelease = function() { myBitmap = new flash.display.BitmapData(160, 120, true, 0); myBitmap.draw(my_video); var tempObj = _root.createEmptyMovieClip("photo", 100); tempObj._x = 300; tempObj._y = 40; tempObj._width= 180; tempObj._height = 240; tempObj.attachBitmap(myBitmap, 1, "always", true);};
我修改后的代码如下:
//init variable    cameraW = new Number(180);    cameraH = new Number(140);photoW = new Number(160);    photoH = new Number(120);var my_cam:Camera = Camera.get();my_cam.setMode(cameraW, cameraH, 10, true);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_cam.setMode(cameraW, cameraH, 10, true);    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);//该对象用于实现发送数据到网页可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=photoW;photoPreview._height=photoH;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(n, m).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;now_date = new Date();//now_date.getDate()//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?Val=" + now_date.getTime(), lv, "POST");           //当页面返回信息即页面处理完成后,触发的行为         lv.onLoad = function (success)    //if(lv.loaded == true)    {    if (success)    {getURL("http://localhost/CaptureAndSignatureWebApp/pageb.aspx?Val=" + now_date.getTime(), "_blank", "POST");//getURL("javascript:alert('Success')");   getURL("javascript:window.location.reload();"); }/*        if (success)            {                //跳转到其他页面                //getURL("http://localhost/CaptureAndSignatureWebApp/pageb.aspx", "_self");    getURL("http://localhost/CaptureAndSignatureWebApp/pageb.aspx?passVal=1", "_blank", "POST");        }else{getURL("javascript:alert('Not Success')");   }*/    }}

但我有一个疑问,为什么width和height要设成160和120,这个没有搞懂,但猜测是跟摄像头的4:3比例有关系,本来想问一下那个URL里的作者,但又不想注册,真是的

 

 

 还有就是如果真正用时,请把action script中的trace去掉,会影响速度

 

原创粉丝点击