var g_iCutType = "1"; var g_iCamIdx = "0"; var g_bIsIE = false; var g_iAngle = 0; var g_fileList = ""; var g_timer = null; var g_iAutoPreCode = "0"; /////////////////////////// 浏览器类型 /////////////////////////// function BrowserType() { var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 if (userAgent.indexOf("Firefox") > -1) return "Firefox"; if (userAgent.indexOf("Chrome") > -1) return "Chrome"; return "IE"; } function IsIE() { if (BrowserType() == "IE") return true; else return false; } /////////////////////////// 旋转 /////////////////////////// function Rotate() { if(g_bIsIE) //ie浏览器 { g_iAngle = showVideoOcx.GetVideoRotate() + 90; g_iAngle = g_iAngle % 360; showVideoOcx.SetVideoRotate(g_iAngle); } else { g_iAngle += 90; g_iAngle = g_iAngle % 360; //$("#img_video_preview").rotate(90); $('.xform').each(function(idx,el) { el.className = "xform x" + "-rotated-" + g_iAngle; }); if (g_iAngle % 180) { $('.xform-p').addClass('rotated'); } else { $('.xform-p').removeClass('rotated'); } } } /////////////////////////// 初始化、卸载 /////////////////////////// function Init() { g_bIsIE = IsIE(); if(g_bIsIE) //ie浏览器 { //var ui = document.getElementById("img_video_preview"); var ui = document.getElementById("noniediv"); ui.style.display="none"; ui.style.visibility="hidden"; showVideoOcx.StartPreview(0); } else { var ui = document.getElementById("ocx_div"); ui.style.display="none"; ui.style.visibility="hidden"; } document.getElementById("url_input").value=g_strHTTPServerPath + "/param=get"; OpenCamera(); SetAutoCut(true); } function Release() { if(g_bIsIE) { showVideoOcx.StopPreview(); } } /////////////////////////// 初始化、卸载 /////////////////////////// function OpenCamera() { var camradio = document.getElementsByName("camidx"); for(i=0; i 0) { select.remove(i); } var arrays = data.resolution.split("|"); for(var i=0; i"; // // if(typeof(image.filepath) != "undefined") // // { // // strImageList += "
点击查看本地文件"; // // } // // document.getElementById("image_list_div").innerHTML = strImageList + document.getElementById("image_list_div").innerHTML; // } function GrabImage() { var strStorageInfo = "{ \"xdpi\":\"200\", \"ydpi\":\"200\", \"jpg_quality\":\"60\" }"; var strImageProcess = "{\"cut_type\":\"" + g_iCutType + "\", \"multi_object\":\"0\", \"rotate\":\"" + g_iAngle.toString() + "\"}"; var params = "{\"camidx\":\"" + g_iCamIdx.toString() + "\",\"make_uuid\":\"1\",\"image_storage_info\":" + strStorageInfo + ",\"image_process_info\":" + strImageProcess + "}"; let randomNum = Math.floor(Math.random() * 100) + 1; var url = g_strHTTPServerPath + "/video=grabimage&tid="+randomNum; console.log("w lai le") $.ajax({ type: "post", url: url, dataType: "json", async: false, // 设置为同步请求 data: params, success: function(data) { if(data.code != 0) { //document.getElementById("result").innerHTML = "拍照失败,错误代码:" + data.code + ",返回信息 = " + data.message; } else { //document.getElementById("result").innerHTML = "图像数量:" + data.image_count; var images = data.images; var iCount = data.image_count; var strImageList = ""; var dataBase64=data.images[0].base64; document.getElementById("gpy_result_base64").innerHTML=data.images[0].base64; // // 监听来自父页面的消息 // const waitForResponse = (targetWindow, message, timeout = 5000) => { // return new Promise((resolve, reject) => { // const timeoutId = setTimeout(() => { // reject(new Error('Timeout while waiting for response')); // }, timeout); // const messageHandler = (event) => { // if (event.origin === 'http://192.168.0.146:9527/#/login') { // targetWindow.removeEventListener('message', messageHandler); // clearTimeout(timeoutId); // resolve(event.data,event.data.images[0].base64); // } // }; // targetWindow.addEventListener('message', messageHandler); // targetWindow.postMessage(message, '*'); // }); // }; // 监听来自父页面的消息 window.addEventListener('message', function(event) { // if (event.origin === 'http://yourdomain.com') { // 确保消息来自你的域 if (event.data === 'callMyFunction') { event.source.postMessage(myFunction(), '*'); // 返回函数执行结果 } // } }); function myFunction(){ console.log(document.getElementById("gpy_result_base64").innerHTML); return document.getElementById("gpy_result_base64").innerHTML } } } }); } function BeginTimer() { if(g_timer == null) { g_timer = setInterval("GetDocumentStatus()", 500); } } function StartAutoCapture() { document.getElementById("result").innerHTML = "开始自动连拍......"; var params = "{\"action\": \"start\"}";// var url = g_strHTTPServerPath + "/video=detectdoc"; $.ajax({ type: "post", url: url, dataType: "json", data: params, success: function(data) { if(data.code != 0) { document.getElementById("result").innerHTML = "返回代码 = " + data.code + ", 返回信息 = " + data.message; } else { document.getElementById("result").innerHTML = "返回代码 = " + data.code + ", 返回信息 = " + data.message; BeginTimer(); } } }); } function StopAutoCapture() { document.getElementById("result").innerHTML = "停止自动连拍"; var params = "{\"action\": \"stop\"}";// var url = g_strHTTPServerPath + "/video=detectdoc"; if(g_timer != null) { clearInterval(g_timer); g_timer=null; } $.ajax({ type: "post", url: url, dataType: "json", data: params, success: function(data) { document.getElementById("result").innerHTML = "连拍已停止"; } }); } function GetDocumentStatus() { var params = "{\"action\": \"status\"}"; var url = g_strHTTPServerPath + "/video=detectdoc"; $.ajax({ type: "post", url: url, dataType: "json", data: params, success: function(data) { if(data.code == "101" && g_iAutoPreCode != data.code) { document.getElementById("result").innerHTML = "返回代码 = " + data.code + ", 返回信息 = " + data.message + ", 拍摄图像 "; GrabImage(); } else if(data.code == "100" || data.code == "102") { document.getElementById("result").innerHTML = "返回代码 = " + data.code + ", 返回信息 = " + data.message + ", 请更换文档"; } else if(data.code != "101" && data.code != "0") { document.getElementById("result").innerHTML = "返回代码 = " + data.code + ", 返回信息 = " + data.message; if(g_timer != null) { clearInterval(g_timer); g_timer=null; } } g_iAutoPreCode = data.code } }); } /////////////////////////// 合并、清空 /////////////////////////// function CleanImageList(bShowNullImage) { g_fileList = ""; document.getElementById("result").innerHTML = ""; if(!bShowNullImage) return; /// 填充空白的示意图 var strImage = ""; var strImages = ""; for(var i = 0; i < 3; i++) { strImages += strImage; } //document.getElementById("image_list_div").innerHTML = strImages; } function ShowMergedResult(data) { CleanImageList(false); if(typeof(data.image) != "undefined") { AddImageToList(data.image); document.getElementById("image_list_div").innerHTML = "
合并结果:
" + document.getElementById("image_list_div").innerHTML; } else if(typeof(data.filepath) != "undefined") { var strResult = "点击此处,查看合并结果"; document.getElementById("result").innerHTML = strResult; document.getElementById("image_list_div").innerHTML = "
" + strResult; } else { document.getElementById("result").innerHTML = "显示合并结果错误"; } /// 清理掉,下次拍照的时候,会自动清空合并的结果 g_fileList = ""; } function MergeImage(iMergeType) { document.getElementById("result").innerHTML = ""; if (g_fileList == "") { document.getElementById("result").innerHTML = "图像列表为空"; return; } var strWatermark = "{ \"pos\":\"4\", \"content\":\"图像水印\", \"transparency\":\"128\", \"fontsize\":\"80\", \"color\":\"red\" }"; var strStorageInfo = "{ \"xdpi\":\"200\", \"ydpi\":\"200\", \"jpg_quality\":\"60\" }"; var params = "{\"merge_type\":\"" + iMergeType.toString() + "\", \"margin\":\"5\", \"align\":\"1\", \"make_uuid\":\"0\", \"source_images\":[" + g_fileList + "], \"image_storage_info\":" + strStorageInfo + ", \"watermark\":" + strWatermark + "}"; var url = g_strHTTPServerPath + "/imagepro=merge_images"; $.ajax({ type: "post", url: url, dataType: "json", data: params, success: function(data) { if(data.code != 0) { document.getElementById("result").innerHTML = "合并失败,返回代码 = " + data.code + ",返回信息 = " + data.message; } else { ShowMergedResult(data); } } }); } function MergeTB() { MergeImage(1); } function MergeLR() { MergeImage(0); } function MergeDocument(strDocument) { document.getElementById("result").innerHTML = ""; if (g_fileList == "") { document.getElementById("result").innerHTML = "图像列表为空"; return; } var params = "[" + g_fileList + "]";// var url = g_strHTTPServerPath + "/imagepro=merge2" + strDocument; $.ajax({ type: "post", url: url, dataType: "json", data: params, success: function(data) { if(data.code != 0) { document.getElementById("result").innerHTML = "合并失败,返回代码 = " + data.code + ",返回信息 = " + data.message; } else { ShowMergedResult(data); } } }); } function MergePDF() { MergeDocument("pdf"); } function MergeOFD() { MergeDocument("ofd"); } /////////////////////////// 设备状态、关闭设备 /////////////////////////// function GetVideoStatus() { document.getElementById("result").innerHTML = ""; var params = ""; var url = g_strHTTPServerPath + "/video=status"; $.ajax({ type: "post", url: url, dataType: "json", data: params, success: function(data) { if(data.code != 0) { document.getElementById("result").innerHTML = "获取设备状态失败,返回代码 = " + data.code + ",返回信息 = " + data.message; } else { document.getElementById("result").innerHTML = "文档摄像头:" + data.video0 + ", 人像1:" + data.video1 + ", 人像2:" + data.video2 + ", 红外1:" + data.videoIR1 + ", 外红2:" + data.videoIR2; } } }); } function CloseDevice() { if(g_bIsIE) //ie浏览器 { showVideoOcx.StopPreview(); } else { var params = ""; var url = g_strHTTPServerPath + "/video=close&camidx=" + g_iCamIdx.toString(); $.ajax({ type: "post", url: url, dataType: "json", data: params, success: function(data) { document.getElementById("result").innerHTML = data.message; } }); //document.getElementById("img_video_preview").src=g_strHTTPServerPath + "/video=close&camidx=" + g_iCamIdx.toString(); } } /////////////////////////// 接口调用测试 /////////////////////////// function PostToService() { document.getElementById("result").innerHTML = ""; var params = document.getElementById("para_input").value; var url = document.getElementById("url_input").value; $.ajax({ type: "post", url: url, dataType: "json", data: params, success: function(data) { if(data.code != 0) { document.getElementById("result").innerHTML = "接口请求失败,返回代码 = " + data.code + ",返回信息 = " + data.message; } else { document.getElementById("result").innerHTML = "接口请求成功"; if(typeof(data.image) != "undefined") { AddImageToList(data.image); } else if(typeof(data.images) != "undefined") { var images = data.images; var iCount = data.image_count; for(var i = 0; i < iCount; i++) AddImageToList(images[i]); } else if(typeof(data.filepath) != "undefined") { var strResult = "点击查看本地文件"; document.getElementById("image_list_div").innerHTML = "
" + strResult; } else { document.getElementById("result").innerHTML = "接口请求成功,返回内容:" + JSON.stringify(data); } } } }); } //////////////////////////// 录像相关 //////////////////////////// function GetAudioList() { document.getElementById("result").innerHTML = "获取音频设备列表... ..."; var params = "{\"action\": \"audio\"}";// 识别区域 var url = g_strHTTPServerPath + "/video=record"; $.ajax({ type: "post", url: url, dataType: "json", data: params, success: function(data) { if(data.code != 0) { document.getElementById("result").innerHTML = "获取音频设备列表失败
返回代码 = " + data.code + "
返回信息 = " + data.message; } else { var select = document.getElementById("audio_list"); //获取select下拉框下所有的选项 while(select.options.length > 0) { select.remove(i); } for(var i=0; i= 0) select.options[index].text; var watermark = "\"watermark\":{\"pos\":\"0\",\"content\":\"测试水印\",\"transparency\":\"250\",\"fontsize\":\"32\",\"font\":\"微软雅黑\",\"color\":\"white\"}"; var params = "{\"action\": \"start\", \"parameter\": {\"camidx\": \"1\",\"width\": \"1280\",\"height\": \"720\",\"bit_rate\": \"600000\",\"framerate\": \"15\",\"audio\": \"" + text + "\"," + watermark + "}}";// var url = g_strHTTPServerPath + "/video=record"; $.ajax({ type: "post", url: url, dataType: "json", data: params, success: function(data) { if(data.code != 0) { document.getElementById("result").innerHTML = "视频录制失败
返回代码 = " + data.code + "
返回信息 = " + data.message; } else { document.getElementById("result").innerHTML = "开始视频录制
返回代码 = " + data.code + "
文件路径 = " + data.filepath; } } }); } function StartRecordVideo() { document.getElementById("result").innerHTML = "请求开始视频录制... ..."; var select = document.getElementById("audio_list"); var index = select.selectedIndex; var text = ""; if(index >= 0) select.options[index].text; var params = "{\"action\": \"start\", \"parameter\": {\"camidx\": \"1\",\"width\": \"1280\",\"height\": \"720\",\"framerate\": \"15\",\"audio\": \"" + text + "\"}}";// var url = g_strHTTPServerPath + "/video=record"; $.ajax({ type: "post", url: url, dataType: "json", data: params, success: function(data) { if(data.code != 0) { document.getElementById("result").innerHTML = "视频录制失败
返回代码 = " + data.code + "
返回信息 = " + data.message; } else { document.getElementById("result").innerHTML = "开始视频录制
返回代码 = " + data.code + "
文件路径 = " + data.filepath; } } }); } function StopRecordVideo() { var params = "{\"action\": \"stop\"}";// var url = g_strHTTPServerPath + "/video=record"; $.ajax({ type: "post", url: url, dataType: "json", data: params, success: function(data) { if(data.code != 0) { document.getElementById("result").innerHTML = "停止视频录制失败
返回代码 = " + data.code + "
返回信息 = " + data.message; } else { document.getElementById("result").innerHTML = "停止视频录制成功 录制时长 " + data.time; } } }); } /////////////////////////////////----------------///////////////////////////////// ///////////////////////////////// 自定义切边专区 ///////////////////////////////// /////////////////////////////////----------------///////////////////////////////// var g_startPageX; var g_startPageY; var g_startImgX; var g_startImgY; var g_bPressed; function InitForCustomCut() { g_bIsIE = IsIE(); if(g_bIsIE) //ie浏览器 { var ui = document.getElementById("img_video_preview"); ui.style.display="none"; ui.style.visibility="hidden"; showVideoOcx.StartPreview(0); } else { var ui = document.getElementById("ocx_div"); ui.style.display="none"; ui.style.visibility="hidden"; } OpenCamera(); SetAutoCut(false); reset_custom_rect(); g_iCutType = "2"; if(g_bIsIE) { showVideoOcx.SetCustomCut(true); } } function GetCustomCutPos() { var rect = showVideoOcx.GetCustomCutPos(); document.getElementById("custom_rect_input").value = rect; } function CatchGetCustomCutRect(szPos) { document.getElementById("custom_rect_input").value = szPos; } function DetectZoom () { var ratio = 0; screen = window.screen; ua = navigator.userAgent.toLowerCase(); if (window.devicePixelRatio !== undefined) { ratio = window.devicePixelRatio; } else if (~ua.indexOf("msie")) { if (screen.deviceXDPI && screen.logicalXDPI) { ratio = screen.deviceXDPI / screen.logicalXDPI; } } else if (window.outerWidth !== undefined && window.innerWidth !== undefined) { ratio = window.outerWidth / window.innerWidth; } if (ratio) ratio = Math.round(ratio * 100); return ratio; }; function custom_rect_mouse_down(event) { if(g_bPressed) return; if(event.button != 2) return; reset_custom_rect(); } function reset_custom_rect() { document.getElementById("custom_rect").style.visibility = "hidden"; document.getElementById("custom_rect").style.width = "0px"; document.getElementById("custom_rect").style.height = "0px"; g_startPageX = 0; g_startPageY = 0; g_startImgX = 0; g_startImgY = 0; } function stream_mouse_down(event) { if(g_iCutType != "2") return; if(event.button != 2) return; var iZoom = DetectZoom(); if(iZoom != 100) { alert("浏览器缩放比例(" + iZoom + ")不为100,手动切边无法正常使用"); return; } document.getElementById("custom_rect").style.position = "absolute"; document.getElementById("custom_rect").style.left = event.pageX + "px"; document.getElementById("custom_rect").style.top = event.pageY + "px"; document.getElementById("custom_rect").style.width = "0px"; document.getElementById("custom_rect").style.height = "0px"; document.getElementById("custom_rect").style.border = "3px solid #0000FF"; document.getElementById("custom_rect").style.visibility = "visible"; var steamElement = document.getElementById("img_video_preview"); g_startImgX = event.clientX - steamElement.x; g_startImgY = event.clientY - steamElement.y; g_startPageX = event.pageX; g_startPageY = event.pageY; g_bPressed = true; } function mouse_up(event) { g_bPressed = false; var rectElement = document.getElementById("custom_rect"); var steamElement = document.getElementById("img_video_preview"); var left = g_startImgX / steamElement.width; left *= 100; var top = g_startImgY / steamElement.height; top *= 100; var right = (g_startImgX + parseInt(rectElement.style.width)) / steamElement.width; right *= 100; var bottom = (g_startImgY + parseInt(rectElement.style.height)) / steamElement.height; bottom *= 100; var jsRect = "{\"left\":\"" + left.toFixed(2) + "%\", \"top\":\"" + top.toFixed(2) + "%\", \"right\":\"" + right.toFixed(2) + "%\", \"bottom\":\"" + bottom.toFixed(2) + "%\"}"; document.getElementById("custom_rect_input").value = jsRect; } function mouse_move(event) { UpdateCustomRect(); } function UpdateCustomRect() { if(!g_bPressed) return; var w = event.pageX - g_startPageX; var h = event.pageY - g_startPageY; document.getElementById("custom_rect").style.width = w + "px"; document.getElementById("custom_rect").style.height = h + "px"; } function doNothing() { window.event.returnValue=false; return false; } function GrabImage_CustomCut() { var jsCustomRect = ", \"custom_rect\":" + document.getElementById("custom_rect_input").value; var strStorageInfo = "{ \"xdpi\":\"200\", \"ydpi\":\"200\", \"jpg_quality\":\"60\" }"; var strImageProcess = "{\"cut_type\":\"" + g_iCutType + "\", \"multi_object\":\"0\", \"rotate\":\"" + g_iAngle.toString() + "\"" + jsCustomRect + "}"; var params = "{\"camidx\":\"" + g_iCamIdx.toString() + "\",\"make_uuid\":\"1\",\"image_storage_info\":" + strStorageInfo + ",\"image_process_info\":" + strImageProcess + "}"; var url = g_strHTTPServerPath + "/video=grabimage"; $.ajax({ type: "post", url: url, dataType: "json", data: params, success: function(data) { if(data.code != 0) { document.getElementById("result").innerHTML = "拍照失败,错误代码:" + data.code + ",返回信息 = " + data.message; } else { document.getElementById("result").innerHTML = "图像数量:" + data.image_count; var images = data.images; var iCount = data.image_count; var strImageList = ""; for(var i = 0; i < iCount; i++) { AddImageToList(data.images[i]); } } } }); } function Barcode() { document.getElementById("result").innerHTML = "条码识别中 ... ... "; var params = "{\"roi\": {\"top\":\"0\",\"left\":\"0\",\"bottom\":\"1\",\"right\":\"1\"}, \"cutpage\":\"" + (g_iCutType == "1" ? 1 : 0) + "\", \"binary\":\"0\",\"rotate\":\"" + g_iAngle.toString() + "\"}";// 识别区域 var url = g_strHTTPServerPath + "/imagepro=barcode"; $.ajax({ type: "post", url: url, dataType: "json", data: params, success: function(data) { if(data.code != 0) { document.getElementById("result").innerHTML = "条码识别失败
返回代码 = " + data.code + "
返回信息 = " + data.message; } else { var barcode = ""; for(var i = 0; i < data.barcode.length; i++) { barcode += "条码" + i.toString() + ",类型:" + data.barcode[i].type + ",条码:" + data.barcode[i].code + "
"; } document.getElementById("result").innerHTML = "条码个数 = " + data.count.toString() + "
" + barcode; } } }); } function sleep(delay) { var start = (new Date()).getTime(); while ((new Date()).getTime() - start < delay) { continue; } } var setFocusTimes; function SetFocusValue(value) { var params = "{\"camidx\": \"" + g_iCamIdx.toString() + "\",\"focus\":\"" + value.toString() + "\"}";// 识别区域 var url = g_strHTTPServerPath + "/video=setproperty"; $.ajax({ type: "post", url: url, dataType: "json", data: params, success: function(data) { if(data.code != 0) { document.getElementById("result").innerHTML = "自动对焦失败
返回代码 = " + data.code + "
返回信息 = " + data.message; } else { setFocusTimes++; if(setFocusTimes == 2){ document.getElementById("result").innerHTML = "自动对焦完成"; } } } }); } function TriggerAutoFocus() { document.getElementById("result").innerHTML = "自动对焦中 ... ... "; var params = "{\"camidx\": \"" + g_iCamIdx.toString() + "\",\"key\":\"focus\"}";// 识别区域 var url = g_strHTTPServerPath + "/video=getproperty"; $.ajax({ type: "post", url: url, dataType: "json", data: params, success: function(data) { if(data.code != 0 || data.settable == 1) { document.getElementById("result").innerHTML = "自动对焦失败
返回代码 = " + data.code + "
返回信息 = " + data.message; } else { setFocusTimes = 0; SetFocusValue(data.default); sleep(500); SetFocusValue(data.max + 1); } } }); }