加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用flash摄像头拍照的简单实践

发布时间:2020-12-15 17:55:14 所属栏目:百科 来源:网络整理
导读:打开Flash CS3,新建一个Flash文件(Script 2.0)。命名为pagea.fla 第一步: ???? 在库中建立一个视频元件,类型选择:视频(受 ActionScript 控制)。 ???? 按F11打开库面板,右键空白地方出现一个弹出菜单,选择“新建视频”,随便起个名字。 第二步: ????

打开Flash CS3,新建一个Flash文件(Script 2.0)。命名为pagea.fla

第一步: ???? 在库中建立一个视频元件,类型选择:视频(受 ActionScript 控制)。 ???? 按F11打开库面板,右键空白地方出现一个弹出菜单,选择“新建视频”,随便起个名字。

第二步: ?????将视频元件拖到场景中,并调整尺寸到想要的大小。并起名为“camera”。同时在该图层放置两个Button,分别命名为“btnCamera”和“btnUpload”。

第三步: ???? 新建一个图层,命名为“代码层”??? 点击时间轴第一帧,按F9打开代码面板,粘贴如下代码:

?

Jscript代码??

收藏代码

  1. //camera是在场景中一个Video实例??????
  2. ??
  3. //注意如果要想获取自己想要拍照大小,先做一个你想要大小的FLV文件,然后video选Embedded??????
  4. camera.clear();??????????????????????
  5. ?????
  6. //摄像头控制对象??????
  7. var?cam:Camera?=?Camera.get();??????
  8. if?(?cam??==?null){??????
  9. ???//code?here?if?client?no?camera?installed??????
  10. }??????
  11. //init?variable??????
  12. photow?=?new?Number(160);??????
  13. photoh?=?new?Number(120);??????
  14. cam.setMode(photow,?photoh,?10,?true);??????
  15. camera.attachVideo(cam);?//绑定摄像头视频流到video??????
  16. //该对象用于实现发送数据到网页可get或post??????
  17. var?lv:LoadVars;??????
  18. lv?=?new?LoadVars();??????
  19. //当按下拍照按纽??????
  20. btnCamera.onRelease?=?function?()??????
  21. {??????
  22. ????//获取当前视频画片??????
  23. ????saveCamera();??????
  24. //...??????
  25. };??????
  26. //toolbar.btnCameraRe.onRelease?=?function(){????????
  27. ??//??...??????
  28. //saveCamera();??????
  29. //}??????
  30. function?saveCamera(){???????
  31. //新建一个bitmapdate对象并获取video上的图像信息??????
  32. ????lv.bm?=?new?flash.display.BitmapData(photow,true,?0);?????????
  33. ????lv.bm.draw(camera);???????
  34. //photoPreview是在场景中的一个Movie?clip实例,用于输出bitmapdate实现照片预缆??????
  35. ????var?tempObj?=?_root.createEmptyMovieClip("photo",?100);??
  36. ?tempObj._x?=?300;??
  37. ?tempObj._y?=?40;??
  38. ????tempObj.attachBitmap(lv.bm,?1);??????????
  39. //上传照片到服务器??????
  40. btnUpload.onRelease?=?function(){??????
  41. ?????????
  42. //读取图片矩形范围的像素信息,并以字符串的形式连接起来?begin??????
  43. ????i?=?lv.bm.height;??????
  44. ????j?=?lv.bm.width;??????
  45. ????rgb_array?=?"";??????
  46. for?(y?=?i?-?1;?y?>=?0;?y--)??????
  47. ????{??????
  48. ????????for?(x?=?0;?x?<?j;?x++)??????
  49. ????????{??????
  50. ????????????color?=?lv.bm.getPixel(x,?y).toString(16);??????
  51. ????????????rgb_array?=?rgb_array?+?(color?+?",");??????
  52. ????????}?//?end?of?for??????
  53. ????}? ????lv.height?=?i;??????
  54. ????lv.width?=?j;??????
  55. ????lv.rgb_array?=?rgb_array;??????
  56. //读取图片矩形范围的像素信息,并以字符串的形式连接起来?end??????
  57. ????????
  58. //发送到要处理的页面URL,可以在页面通过Request.Form["名称"]获取值,如:Request.Form["rgb_array"]??????
  59. ????lv.sendAndLoad("pageb.jsp",?lv,?"POST");??????
  60. //当页面返回信息即页面处理完成后,触发的行为???????
  61. /*?
  62. ?
  63. ????lv.onLoad?=?function?(success)?????
  64. ????{?????
  65. ????????if?(success)?????
  66. ????????{?????
  67. ????????????//跳转到其他页面?????
  68. ????????????getURL("pagea.jsp",?"_self");?????
  69. ????????}?????
  70. ????};*/??????
  71. }??????

第四步: ??? 按F12把flash导出成为html,你可以得到pagea.fla,pagea.html, pagea.swf和AC_RunActiveContent.js。 ? 把pagea.html重命名为pagea.jsp,放置到你的jsp服务器目录下

第五步: ?? 新建一个文件叫做pageb.jsp。粘贴如下代码

Java代码??

收藏代码

    <%@page?import="java.io.*,java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*,javax.imageio.stream.*"%><%??
  1. String?width?=?request.getParameter("width");??
  2. ?String?height?=?request.getParameter("height");??
  3. int?w?=?Integer.parseInt(width);??
  4. ??int?h?=?Integer.parseInt(height);??
  5. try?{??
  6. //OutputStream?fos?=?response.getOutputStream();??
  7. ???OutputStream?fos?=?new?FileOutputStream(new?File("c:a.jpg"));??
  8. ???BufferedImage?bf?=?new?BufferedImage(w,?h,??
  9. ?????BufferedImage.TYPE_INT_RGB);??
  10. ????String?data?=?request.getParameter("rgb_array");??
  11. ????String[]?ds?=?data.split(",");??
  12. int?leng=ds.length-1;??
  13. ???for?(int?i?=?bf.getHeight()-1;?i>=0?;?i--)?{????
  14. int?j?=?0;?j?<?bf.getWidth();?j++)?{??
  15. ?????int?d?=?Integer.parseInt(ds[leng-(i*w+(bf.getWidth()-j-1))],?16);??
  16. ?????//System.out.print(d);??
  17. ?????bf.setRGB(j,?i,?d);??
  18. ????}??
  19. ???}??
  20. ???ImageWriter?writer?=?null;??
  21. ???ImageTypeSpecifier?type?=?ImageTypeSpecifier.createFromRenderedImage(bf);??
  22. ???Iterator?iter?=?ImageIO.getImageWriters(type,?"jpg");??
  23. if?(iter.hasNext())?{??
  24. ????writer?=?(ImageWriter)?iter.next();??
  25. if?(writer?==?null)?{??
  26. return?;??
  27. ???IIOImage?iioImage?=?new?IIOImage(bf,85); font-weight:bold">null,85); font-weight:bold">null);??
  28. ???ImageWriteParam?param?=?writer.getDefaultWriteParam();??
  29. ???param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);??
  30. ???param.setCompressionQuality(0.2f);??
  31. //?save?to?file??
  32. //ImageOutputStream?outputStream2?=?ImageIO.createImageOutputStream(response.getOutputStream());??
  33. ???ImageOutputStream?outputStream2?=?ImageIO.createImageOutputStream(fos);??
  34. ???writer.setOutput(outputStream2);??
  35. ???writer.write( ???fos.close();??
  36. ??}?catch?(Exception?e)?{??
  37. ???e.printStackTrace();??
  38. ??}??
  39. System.out.println("w?=?"?+?w?+?",h="?+?h);??
  40. ?response.setContentType("image/jpeg");??
  41. ? %>??

此时你可以通过访问http://yourserver/pagea.jsp?来访问拍照页面,允许flash访问camera。等待画面出来之后,点击拍照和上传按钮,图片就会上传到服务器的c:a.jpg中。

本例仅给出简单参考,你可以根据实际需要设定图片保存的临时目录和文件名,并处理完成过后的提示信息。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读