上次的代码发现原来照出来的图像比例有点不对,客户不满意,就查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去掉,会影响速度