用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去掉,会影响速度
- 用flash获取摄像头照出来的图像变形的问题解决方法
- Qt 中获取摄像头图像数据的方法
- linux下摄像头图像数据的获取
- linux下摄像头图像数据的获取
- Android手机获取QQ闪照的方法
- 将摄像头的图像读取出来并且转化为灰度图像
- flash摄像头的使用
- 获取图像的方法
- 用各种摄像头获取图像
- MATLAB获取“非免驱的相机或者摄像头”的图像数据
- 关于虚拟机下Linux的opencv获取摄像头图像问题
- 两个usb摄像头的同时采集图像的一般方法。
- ros中录制摄像头采集的图像的方法
- 深度图像的获取方法
- 小技巧:用CxImage将从摄像头获取的图像原始数据转成JPG,然
- 用CxImage将从摄像头获取的图像原始数据转成JPG
- QT和VTK联合显示图像时发生扭曲变形的问题解决
- Opencv将数组转化成图像显示出来的方法
- VC++/MFC学习笔记(二)
- 一个类似firebug的IE插件:HttpWatch专业版
- Adobe与Google及Yahoo结盟 强化Flash内容搜索
- 以本地用户身份访问 SQL Server
- 最大子序列
- 用flash获取摄像头照出来的图像变形的问题解决方法
- 换工作了!!
- 数据库中的(Bookmark Lookup)
- 在java中使用jdbc的数据库连接大全
- 笔试题
- YT-70A串联蓄电池组容量检测仪
- 股市
- linux 命令总结
- YT-70B蓄电池单格容量检测仪