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";
var websocket;
var connected = false;
/**
* 初始化webSocket连接
* @param callback
* @param value
* @constructor
*/
function ConnectServer(callback, value) {
if ("WebSocket" in window) {
websocket = new WebSocket(g_strWebsocketServerPath);
} else if (window.WebSocket) {
websocket = new WebSocket(g_strWebsocketServerPath);
} else if ("MozWebSocket" in window) {
websocket = new MozWebSocket(g_strWebsocketServerPath);
} else {
alert("浏览器版本太低!请使用Chrome、Firefox、IE10+浏览器!");
}
websocket.onopen = function () {
connected = true;
callback(value);
}
websocket.onclose = function (e) {
connected = false;
}
websocket.onmessage = function (e) {
onMessage(e);
}
websocket.onerror = function (e) {
alert("未连接websocket服务器,请确保已运行服务端!!!!");
};
}
/**
* 接收服务器消息
* @param e
*/
function onMessage(e) {
var jsonObj =JSON.parse(e.data);
// if(0 != jsonObj.code)
// {
// document.getElementById("result").innerHTML = "发生错误:" + jsonObj.message + "(" + jsonObj.code + ")";
// }
// else
// {
// document.getElementById("result").innerHTML = "请求成功";
// }
if(jsonObj.function == "video_stream")
{
document.getElementById("img_video_preview").src= "data:image/gif;base64," + jsonObj.image_base64;
}
if(jsonObj.function == "grab_image")
{
if(jsonObj.code != 0)
{
document.getElementById("result").innerHTML = "拍照失败,错误代码:" + jsonObj.code + ",返回信息 = " + jsonObj.message;
}
else
{
document.getElementById("result").innerHTML = "图像数量:" + jsonObj.image_count;
var images = jsonObj.images;
var iCount = jsonObj.image_count;
var strImageList = "";
for(var i = 0; i < iCount; i++)
{
AddImageToList(jsonObj.images[i]);
}
}
}
if(jsonObj.function == "get_resolution")
{
if(jsonObj.code != 0)
{
document.getElementById("result").innerHTML = "获取分辨率失败,错误代码 = " + jsonObj.code + ",错误信息 = " + jsonObj.message;
}
else
{
var select = document.getElementById("resolution");
//获取select下拉框下所有的选项
while(select.options.length > 0)
{
select.remove(i);
}
var arrays = jsonObj.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 BeginTimer()
{
if(g_timer == null)
{
g_timer = setInterval("GetDocumentStatus()", 500);
}
}
function StartAutoCapture()
{
document.getElementById("result").innerHTML = "开始自动连拍......";
var params = "{\"action\": \"start\"}";//
var data = "{\"function\": \"set_cutpage\", \"params\": " + params + "}";
connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}
function StopAutoCapture()
{
document.getElementById("result").innerHTML = "停止自动连拍";
var params = "{\"action\": \"stop\"}";//
var data = "{\"function\": \"set_cutpage\", \"params\": " + params + "}";
connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}
function GetDocumentStatus()
{
var params = "{\"action\": \"status\"}";
var data = "{\"function\": \"detect_doc\", \"params\": " + params + "}";
connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}
/////////////////////////// 合并、清空 ///////////////////////////
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 data = "{\"function\": \"merge_images\", \"params\": " + params + "}";
connected ? sendMessage(data) : ConnectServer(sendMessage, 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 data = "{\"function\": \"set_cutpage\", \"params\": " + params + "}";
connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}
function MergePDF()
{
MergeDocument("pdf");
}
function MergeOFD()
{
MergeDocument("ofd");
}
/////////////////////////// 设备状态、关闭设备 ///////////////////////////
function GetVideoStatus()
{
document.getElementById("result").innerHTML = "";
var params = "";
var data = "{\"function\": \"get_status\", \"params\": " + params + "}";
connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}
/////////////////////////// 接口调用测试 ///////////////////////////
function PostToService()
{
document.getElementById("result").innerHTML = "";
var params = document.getElementById("para_input").value;
connected ? sendMessage(params) : ConnectServer(sendMessage, params);
}
/////////////////////////////////----------------/////////////////////////////////
///////////////////////////////// 自定义切边专区 /////////////////////////////////
/////////////////////////////////----------------/////////////////////////////////
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 data = "{\"function\": \"grab_image\", \"params\": " + params + "}";
connected ? sendMessage(data) : ConnectServer(sendMessage, data);
}