takephoto.jsp 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. <!DOCTYPE HTML>
  2. <%@ page language="java" pageEncoding="UTF-8" import="java.util.*" contentType="text/html; charset=UTF-8"%>
  3. <%@include file="/jsp/framework/head.jsp"%>
  4. <%@ taglib uri="/WEB-INF/hnisi.tld" prefix="hnisi"%>
  5. <%
  6. String sllsh = (DTOUtil.getValue("sllsh") == ""? "" : DTOUtil.getValue("sllsh"));
  7. final String putObjectUrl = ConfUtil.getParam("GGFW_WJFW_UPLOAD_URL");
  8. final String usertoken=(String)request.getSession().getAttribute("usertoken");
  9. %>
  10. <html>
  11. <style>
  12. html,body{
  13. width: 100%;
  14. height: 100%;
  15. margin: 0;
  16. padding: 0;
  17. }
  18. </style>
  19. <head lang="zh-cn">
  20. <meta charset="utf-8">
  21. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  22. <meta name="viewport" content="width=device-width,initial-scale=1">
  23. <title>高拍仪</title>
  24. </head>
  25. <body onLoad="Init()">
  26. <div id="root" style="width: 100%;height: 100%;padding:0 10px 10px 0px;">
  27. <div class="row" style="height:100%;margin:10px 0">
  28. <div class="col col-9">
  29. <div class="section" style="width: 100%;height: 100%;">
  30. <div class="section-title">
  31. <img class="title-icon" src="${ctx}/themes/zjrs/images/title-icon.png" />
  32. <span class="section-title-text">拍摄预览区</span>
  33. <span class="section-title-extra-btn">
  34. <a style="color:red;">拍照完成确认无误后,请务必点击【保存】。</a>
  35. <a class="btn btn-primary" onclick="doGrabImage()">拍照</a>&nbsp;&nbsp;&nbsp;&nbsp;
  36. <a class="btn btn-primary" onclick="goBack()">返回</a>
  37. </span>
  38. </div>
  39. <div id="noniediv" class="bg_set">
  40. <img id="streamimage" style="width:100%;height: 100%;" src="http://127.0.0.1:38088/?video=stream&camidx=1" />
  41. </div>
  42. <!-- 如果是ie浏览器,会显示ocx -->
  43. <div id="ocxdiv" style="width: 100%;height: 94%;">
  44. <OBJECT id="ocxstreamimage" name="showVideoOcx" width="100%" height="100%" classid="clsid:A4B4E9B5-78E6-4CE3-B8A1-4B36237943F8"></OBJECT>
  45. </div>
  46. </div>
  47. </div>
  48. <div class="col col-3">
  49. <div class="section" style="width: 100%;height: 100%;">
  50. <div class="section-title">
  51. <img class="title-icon" src="${ctx}/themes/zjrs/images/title-icon.png" />
  52. <span class="section-title-text">缩略图</span>
  53. <span class="section-title-extra-btn">
  54. <a class="btn btn-ghost" onclick="doClear()">清空</a>
  55. <a class="btn btn-primary" onclick="doSave()">保存</a>
  56. </span>
  57. </div>
  58. <div id="image_list_div" class="bg_set" style="overflow:auto;">
  59. </div>
  60. </div>
  61. </div>
  62. </div>
  63. </div>
  64. </body>
  65. <script src="/web/jsp/shoudan/web/mainview/jquery/jquery.js"></script>
  66. <script type="text/javascript">
  67. var GVAR_TAKEPHOTO= {
  68. "sllsh":"<%=sllsh%>"
  69. };
  70. //如果GVAR已经定义了则追加
  71. if(GVAR){
  72. GVAR = $.extend(GVAR, GVAR_TAKEPHOTO);
  73. }else{
  74. var GVAR = GVAR_TAKEPHOTO;
  75. }
  76. var $2 = $.noConflict(); // 第二个加载的jQuery对象变成了 $2
  77. var imgObj = {};//拍摄照片结果
  78. var imgCnt = 0;//拍摄照片计数
  79. var imgSaveCnt = 0;//保存照片计数
  80. //浏览器类型
  81. function BrowserType(){
  82. var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
  83. if(userAgent.indexOf("Firefox") > -1){
  84. return "Firefox";
  85. }else if(userAgent.indexOf("Chrome") > -1){
  86. return "Chrome";
  87. }
  88. return "IE";
  89. }
  90. //是否IE浏览器
  91. function IsIE(){
  92. if(BrowserType() == "IE"){
  93. return true;
  94. }else{
  95. return false;
  96. }
  97. }
  98. //启动 CameraService 服务程序
  99. function Init(){
  100. window.location.href="cameraServicetis:0";
  101. //计算高度
  102. var distance = document.documentElement.clientHeight;
  103. var divHeight = distance-52;
  104. //ie浏览器
  105. if(IsIE()){
  106. var ui = document.getElementById("noniediv");
  107. ui.style.display="none";
  108. ui.style.visibility="hidden";
  109. document.getElementById("ocxdiv").style.height= divHeight +"px";
  110. showVideoOcx.StartPreview(1);
  111. }else{
  112. var ui = document.getElementById("ocxdiv");
  113. ui.style.display="none";
  114. ui.style.visibility="hidden";
  115. document.getElementById("noniediv").style.height= (divHeight - 10) +"px";
  116. }
  117. //设置右侧div高度
  118. document.getElementById("image_list_div").style.height= (divHeight - 10) +"px";
  119. }
  120. //拍照
  121. function doGrabImage(){
  122. var strImageProcess = "{\"cut_type\":\"0\"}";
  123. var strStorageInfo = "{ \"xdpi\":\"200\", \"ydpi\":\"200\", \"jpg_quality\":\"60\"}";
  124. var params = "{\"camidx\":\"1\",\"make_uuid\":\"0\",\"image_storage_info\":" + strStorageInfo + ",\"image_process_info\":" + strImageProcess + "}";
  125. //alert("params="+params);
  126. var url = "http://127.0.0.1:38088/video=grabimage";
  127. $2.ajax({
  128. type: "post",
  129. url: url,
  130. dataType: "json",
  131. data: params,
  132. success: function(data){
  133. if(data.code != 0){
  134. alert(data.message);
  135. }else{
  136. var images = data.images;
  137. var iCount = data.image_count;
  138. var strImageList = "";
  139. for(var i = 0; i < iCount; i++){
  140. //保存数据到图片集
  141. imgCnt++;
  142. imgSaveCnt++;
  143. var imgKey = "img" + imgCnt;
  144. imgObj[imgKey] = images[i].base64;
  145. //界面显示
  146. strImageList += "<img id=\"" + imgKey + "\" src=\"data:image/jpg;base64," + images[i].base64 + "\" width=96% />";
  147. //if(typeof(images[i].uuid) != "undefined")
  148. //document.getElementById("pdf_input").value = images[i].uuid;
  149. }
  150. document.getElementById("image_list_div").innerHTML = strImageList + document.getElementById("image_list_div").innerHTML;
  151. }
  152. }
  153. });
  154. }
  155. //返回
  156. function goBack(){
  157. var title=encodeURIComponent('照片采集');
  158. window.location.href = "${ctx}/shoudan/web/mainview/mainview!viewphoto.do?title="+title+"&sllsh="+ GVAR.sllsh;
  159. }
  160. //清空
  161. function doClear(){
  162. document.getElementById("image_list_div").innerHTML = "";
  163. imgObj = {};//拍摄照片结果
  164. imgCnt = 0;//拍摄照片计数
  165. imgSaveCnt = 0;//保存照片计数
  166. }
  167. //保存
  168. function doSave(){
  169. if(imgSaveCnt > 0){
  170. var url = "<%=putObjectUrl%>";
  171. var token = "<%=usertoken%>";
  172. if(CFW.oValid.fnIsNull(token)){
  173. alert("系统登录超时,上传失败,请重新登录后上传!");
  174. return;
  175. }
  176. var tyccids = putFiles(url,token);
  177. var mParams={
  178. sllsh:GVAR.sllsh,
  179. tyccids:tyccids
  180. };
  181. CFW.oAJax.doService("mainviewService.savePhoto", mParams, '正在保存照片信息...',
  182. function(mData) {
  183. if(mData[0].FLAG=="1"){
  184. alert("保存成功!");
  185. doClear();
  186. }else{
  187. alert("保存失败!");
  188. }
  189. }
  190. );
  191. }else{
  192. alert("请先点击拍照,拍摄需要保存的文件!");
  193. }
  194. }
  195. //文件上传,返回统一存储ID
  196. function putFiles(url,token){
  197. var tyccids = "";
  198. for(var i=0;i<imgSaveCnt;i++){
  199. var formdata = new FormData();
  200. var imgindex=i+1;
  201. const blob = base64ToBlob("data:image/jpeg;base64,"+imgObj["img"+imgindex]);
  202. const file = blobToFile(blob, "img"+imgindex+".jpg");
  203. formdata.append('file', file, "img"+imgindex+".jpg");
  204. formdata.append('business', 'business1');
  205. var tyccid = putObject(url,token,formdata);
  206. tyccids +=tyccid+",";
  207. }
  208. return tyccids;
  209. }
  210. </script>
  211. <script src="${ctx}/jsp/shoudan/web/mainview/js/put-object-to-fileserver.js"></script>
  212. </html>