You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
566 lines
16 KiB
566 lines
16 KiB
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<arrays.length; i++)
|
|
{
|
|
select.options.add(new Option(arrays[i], arrays[i]));
|
|
}
|
|
|
|
document.getElementById("result").innerHTML = "获取分辨率成功";
|
|
}
|
|
}
|
|
if(jsonObj.function == "set_resolution")
|
|
{
|
|
document.getElementById("result").innerHTML = "设置分辨率,返回代码 = " + jsonObj.code + ",返回信息 = " + jsonObj.message;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 向服务器发送信息的共享方法
|
|
* @param jsonStr
|
|
*/
|
|
function sendMessage(jsonStr) {
|
|
connected ? websocket.send(jsonStr) : alert("未连接websocket服务器,请确保已运行服务端!");
|
|
}
|
|
|
|
function Rotate()
|
|
{
|
|
// 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()
|
|
{
|
|
OpenCamera();
|
|
// SetAutoCut(true);
|
|
}
|
|
|
|
function Release()
|
|
{
|
|
|
|
}
|
|
|
|
/////////////////////////// 初始化、卸载 ///////////////////////////
|
|
|
|
function OpenCamera()
|
|
{
|
|
var camradio = document.getElementsByName("camidx");
|
|
for(i=0; i<camradio.length; i++)
|
|
{
|
|
if(camradio[i].checked)
|
|
g_iCamIdx = camradio[i].value;
|
|
}
|
|
|
|
var data = "{\"function\": \"open_camera\", \"camidx\": \"" + g_iCamIdx.toString() + "\"}";
|
|
connected ? sendMessage(data) : ConnectServer(sendMessage, data);
|
|
|
|
setTimeout( function(){
|
|
GetResolutionList();
|
|
}, 1000 );//延迟1000毫秒
|
|
}
|
|
|
|
function CloseDevice()
|
|
{
|
|
var data = "{\"function\": \"close_camera\", \"camidx\": \"" + g_iCamIdx.toString() + "\"}";
|
|
connected ? sendMessage(data) : ConnectServer(sendMessage, data);
|
|
}
|
|
|
|
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 + "}";
|
|
var data = "{\"function\": \"grab_image\", \"params\": " + params + "}";
|
|
connected ? sendMessage(data) : ConnectServer(sendMessage, data);
|
|
}
|
|
|
|
/////////////////////////// 分辨率 ///////////////////////////
|
|
|
|
function GetResolutionList()
|
|
{
|
|
var params = "{\"type\": \"resolution\",\"camidx\":\"" + g_iCamIdx.toString() + "\"}";
|
|
var data = "{\"function\": \"get_resolution\", \"params\": " + params + "}";
|
|
connected ? sendMessage(data) : ConnectServer(sendMessage, data);
|
|
}
|
|
|
|
function SetResolution()
|
|
{
|
|
var select = document.getElementById("resolution");
|
|
var index = select.selectedIndex;
|
|
var text = select.options[index].text
|
|
var splits = text.split("x");
|
|
|
|
var params = "{\"resolution\": {\"width\":\"" + splits[0] + "\",\"height\":\"" + splits[1] + "\"},\"camidx\":\"" + g_iCamIdx.toString() + "\"}";
|
|
var data = "{\"function\": \"set_resolution\", \"params\": " + params + "}";
|
|
connected ? sendMessage(data) : ConnectServer(sendMessage, data);
|
|
}
|
|
|
|
/////////////////////////// 切边 ///////////////////////////
|
|
|
|
function SetAutoCut(bAuto)
|
|
{
|
|
g_iCutType = bAuto ? 1 : 0;
|
|
var params = "{\"cutpage\":\"" + (g_iCutType ? "true" : "false") + "\"}";//
|
|
var data = "{\"function\": \"set_cutpage\", \"params\": " + params + "}";
|
|
connected ? sendMessage(data) : ConnectServer(sendMessage, data);
|
|
}
|
|
|
|
/////////////////////////// 拍照、连拍 ///////////////////////////
|
|
|
|
function AddImageToList(image)
|
|
{
|
|
// if(typeof(image.base64) == "undefined")
|
|
// return;
|
|
|
|
// /// 首次添加的时,把列表中示意的空图像移除掉
|
|
// if(g_fileList == "")
|
|
// document.getElementById("image_list_div").innerHTML = "";
|
|
|
|
// if(typeof(image.uuid) != "undefined")
|
|
// {
|
|
// var uuid = image.uuid;
|
|
// if(g_fileList == "")
|
|
// {
|
|
// g_fileList = "{\"uuid\":\"" + uuid.toString() + "\"}";
|
|
// }
|
|
// else
|
|
// {
|
|
// g_fileList = g_fileList + ",{\"uuid\":\"" + uuid.toString() + "\"}";
|
|
// }
|
|
// }
|
|
|
|
// var strImageList = "<img src=\"data:image/jpg;base64," + image.base64 + "\" class=\"new_image\" />";
|
|
|
|
// if(typeof(image.filepath) != "undefined")
|
|
// {
|
|
// strImageList += "<br/><a target=_blank href=\"file:///" + image.filepath + "\">点击查看本地文件</a>";
|
|
// }
|
|
|
|
// 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 = "<img class=\"new_image\" src=\"null_image.png\">";
|
|
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 = "<br/>合并结果:<br/>" + document.getElementById("image_list_div").innerHTML;
|
|
}
|
|
else if(typeof(data.filepath) != "undefined")
|
|
{
|
|
var strResult = "<a target=_blank href=\"" + data.filepath + "\">点击此处,查看合并结果</a>";
|
|
document.getElementById("result").innerHTML = strResult;
|
|
document.getElementById("image_list_div").innerHTML = "<br/>" + 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);
|
|
}
|
|
|