iv-npm
Version:
公共通用包
744 lines (681 loc) • 25.5 kB
HTML
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>文豆高拍仪多浏览器V1.26.2版测试Demo</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<!-- 引入高拍仪JS接口-->
<script src="wdgpy.js" type="text/javascript" charset="utf-8"></script>
<script src="postMessage.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
function getMessageId(length, chars) {
var result = "";
for (var i = length; i > 0; --i)
result += chars[Math.floor(Math.random() * chars.length)];
return result;
}
var messageId = null
var fileBase64Str = "";
var file_path = "";
//时间格式化显示
function formatDate(time) {
var date = new Date(time);
var year = date.getFullYear(),
month = date.getMonth() + 1,
day = date.getDate(),
hour = date.getHours(),
min = date.getMinutes(),
sec = date.getSeconds();
var newTime =
year +
(month < 10 ? "0" + month : month) +
(day < 10 ? "0" + day : day) +
(hour < 10 ? "0" + hour : hour) +
(min < 10 ? "0" + min : min) +
(sec < 10 ? "0" + sec : sec);
return newTime;
}
function sleep(milliSeconds) {
var startTime = new Date().getTime();
while (new Date().getTime() < startTime + milliSeconds);
}
function ShowInfo(op) {
console.log(op);
}
/*----------------------------------------------------
---(必须重写该函数)返回获取的设备数目及设备名称 ---
-----------------------------------------------------*/
function GetDevCountAndNameResultCB(devCount, devNameArr) {
if (devCount > 0) {
var obj = document.getElementById("DevName");
obj.options.length = 0;
for (var i = 0; i < devCount; i++) {
var objOption = document.createElement("option");
objOption.text = devNameArr[i];
objOption.value = i;
obj.options.add(objOption);
}
obj.selectedIndex = 0;
var CamID = obj.selectedIndex;
//获取分辨率
Cam_GetDevResolution(CamID);
} else {
window.parent.postMessage(
{ error: "没有发现合适的设备!", messageId: messageId },
"*"
);
}
}
/*---------------------------------------------------
--- (必须重写该函数)返回获取的设备分辨率信息 ---
----------------------------------------------------*/
function GetResolutionResultCB(resCount, resArr) {
if (resCount > 0) {
var selectIndex = 0;
var obj = document.getElementById("DevResolution");
obj.options.length = 0;
for (var i = 0; i < resCount; i++) {
var objOption = document.createElement("option");
objOption.text = resArr[i];
objOption.value = i;
obj.options.add(objOption);
//默认1000万分辨率打开
if (resArr[i] == "3672*2856") {
selectIndex = i;
}
}
obj.selectedIndex = selectIndex;
//打开摄像头
Cam_Close();
var restr = obj[obj.selectedIndex].text;
var pos = restr.lastIndexOf("*");
var width = parseInt(restr.substring(0, pos));
var height = parseInt(restr.substring(pos + 1, restr.length));
var CamID = document.getElementById("DevName").selectedIndex;
Cam_Open(CamID, width, height);
} else {
window.parent.postMessage({ error: "获取分辨率信息失败!" , messageId: messageId}, "*");
}
}
/*---------------------------------------------------
--- (必须重写该函数)返回摄像头开启状态 ---
----------------------------------------------------*/
function GetCameraOnOffStatus(status) {
if (status == 0) {
window.parent.postMessage({ message: "设备开启成功", messageId: messageId }, "*");
Cam_SetCutMode(1); //设备开启后自动裁剪
} else {
window.parent.postMessage({ error: "设备开启失败", messageId: messageId }, "*");
}
}
/*---------------------------------------------------
-------- (必须重写该函数)拍照结果 ---------
----------------------------------------------------*/
function GetCaptrueImgResultCB(flag, path, base64Str) {
if (flag == 0) {
file_path = path;
fileBase64Str = base64Str;
var obj = document.getElementById("CameraPhoto");
obj.src = "data:;base64," + base64Str;
if (path == "") {
window.parent.postMessage({ message: "拍照成功", messageId: messageId }, "*");
} else {
console.log(messageId,'135');
window.parent.postMessage(
{
message: "拍照成功,图片保存位置:" + path,
GetCaptrueImgResultCB: "data:;base64," + base64Str,
messageId: messageId
},
"*"
);
}
} else {
window.parent.postMessage({ error: "拍照失败", messageId: messageId }, "*");
}
}
/*---------------------------------------------------
------ (必须重写该函数)身份证信息返回结果 ------
----------------------------------------------------*/
function GetIdCardInfoResultCB(
flag,
Name,
Sex,
Nation,
Born,
Address,
CardNum,
IssuedAt,
EffectedDate,
CardImgPath,
CardImgBase64
) {
if (flag == 0) {
document.getElementById("CardName").value = Name;
document.getElementById("CardSex").value = Sex;
document.getElementById("CardNation").value = Nation;
document.getElementById("CardBorn").value = Born;
document.getElementById("CardAddress").value = Address;
document.getElementById("CardNum").value = CardNum;
document.getElementById("CardIssuedAt").value = IssuedAt;
document.getElementById("CardEffectDate").value = EffectedDate;
var obj = document.getElementById("IdCardPhoto");
obj.src = "data:;base64," + CardImgBase64;
window.parent.postMessage({ message: "读卡成功", messageId: messageId }, "*");
} else {
window.parent.postMessage({ error: "读卡失败" , messageId: messageId}, "*");
}
}
/*---------------------------------------------------
------ (必须重写该函数)条码二维码识别返回结果------
----------------------------------------------------*/
function QrBarCodeRecogResultCB(flag, codeStr) {
if (flag == 0)
window.parent.postMessage(
{ message: "条码/二维码识别结果:" + codeStr, messageId: messageId },
"*"
);
else window.parent.postMessage({ error: "未识别到内容", messageId: messageId }, "*");
}
/*********************
*** 初始化操作 ***
**********************/
function LoadCameraDocument() {
if (!window.WebSocket) {
alert("浏览器不支持HTML5,请更新或者使用其它浏览器!");
}
//console.log("LoadCameraDocument");
messageId = getMessageId(
10,
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
);
console.log(messageId,'207');
var obj = document.getElementById("CameraCtl");
Cam_ControlInit(obj, 0, 0, 600, 400);
}
window.onload = function () {
console.log("window.onload");
};
/*********************
*** 打开摄像头 ***
**********************/
function toOpenCamera() {
var CamID = document.getElementById("DevName").selectedIndex;
var obj = document.getElementById("DevResolution");
var restr = obj[obj.selectedIndex].text;
var pos = restr.lastIndexOf("*");
var width = parseInt(restr.substring(0, pos));
var height = parseInt(restr.substring(pos + 1, restr.length));
Cam_Open(CamID, width, height);
}
/*********************
*** 关闭摄像头 ***
**********************/
function toCloseCamera() {
Cam_Close();
}
/*********************
*** 关闭弹窗 ***
**********************/
function toCloseModal() {
window.onbeforeunload();
}
/*********************
*** 切换摄像头 ***
**********************/
function SelectDevice() {
var CamID = document.getElementById("DevName").selectedIndex;
//获取分辨率
Cam_GetDevResolution(CamID);
}
/*********************
*** 切换分辨率 ***
**********************/
function SelectResolution() {
var obj = document.getElementById("DevResolution");
var restr = obj[obj.selectedIndex].text;
var pos = restr.lastIndexOf("*");
var width = parseInt(restr.substring(0, pos));
var height = parseInt(restr.substring(pos + 1, restr.length));
var CamID = document.getElementById("DevName").selectedIndex;
Cam_Open(CamID, width, height);
}
/*********************
*** 拍照 ***
**********************/
function TakePhoto() {
var name = formatDate(new Date().getTime());
var obj = document.getElementById("FileType");
var path;
Cam_SetFileType(obj.selectedIndex); //设置文件格式
if (obj.selectedIndex == 0) {
path = "D:\\" + name + ".jpg";
} else if (obj.selectedIndex == 1) {
path = "D:\\" + name + ".png";
} else if (obj.selectedIndex == 2) {
path = "D:\\" + name + ".tif";
} else if (obj.selectedIndex == 3) {
path = "D:\\" + name + ".pdf";
} else {
path = "D:\\" + name + ".jpg";
}
Cam_Photo(path); //主摄像头拍照
//Cam_Photo(""); //传空路径拍照获取Base64
}
function SetCameraCutMode() {
Cam_SetCutMode(1);
// if (document.getElementById("Radio1").checked) {
// Cam_SetCutMode(0);
// }
// if (document.getElementById("Radio3").checked) {
// Cam_SetCutMode(1);
// }
// if (document.getElementById("Radio2").checked) {
// Cam_SetCutMode(2);
// }
// if (document.getElementById("Radio4").checked) {
// Cam_SetCutMode(3);
// //设置裁剪区域
// //toSleep(100);
// //console.log("SetCustomArea");
// SetCustomArea(3000, 3000, 9000, 9000);
// }
}
/*********************
*** 读取身份证 ***
**********************/
function GetIdCardInfo() {
var path = "D:\\IdCard.jpg";
Cam_ReadIdCard(path);
//Cam_ReadIdCard("");
}
/*********************
*** 设置文件格式 ***
**********************/
function toSetFileType() {
var obj = document.getElementById("FileType");
Cam_SetFileType(obj.selectedIndex);
}
/*********************
*** 设置色彩模式 ***
**********************/
function toSetColorModel() {
var obj = document.getElementById("ColorMode");
Cam_SetColorMode(obj.selectedIndex);
}
/*********************
*** 设置JPG图像质量 ***
**********************/
function toSetJpgQuality() {
var obj = document.getElementById("JpgQuality");
var val = obj[obj.selectedIndex].text;
Cam_SetJpgQuality(parseInt(val));
}
/*********************
*** 设置去黑边 ***
**********************/
function toSetDeleteBlackEdge() {
var obj = document.getElementById("Checkbox1");
if (obj.checked) {
Cam_SetDeleteBlackEdge(1);
} else {
Cam_SetDeleteBlackEdge(0);
}
}
/*********************
*** 设置去底色 ***
**********************/
function toSetDeleteBgColor() {
var obj = document.getElementById("Checkbox2");
if (obj.checked) {
Cam_SetDeleteBgColor(1);
} else {
Cam_SetDeleteBgColor(0);
}
}
/*********************
****** 上传方法2 ******
**********************/
function HttpUploadFile() {
//fileBase64Str在拍照回调函数中赋值,用于测试上传方法2
if (fileBase64Str != "") {
var pos = file_path.lastIndexOf("\\");
var filename = file_path.substring(pos + 1, file_path.length);
//UpladFile方法在upload.js实现
// UpladFile("http://localhost:/api/contract-management/upload/contract", fileBase64Str, filename, HttpResultCallBak);
}
}
//从摄像头中识别二维码
function RecogQrCodeFromCamera(type) {
Cam_RecogQrBarCodeFromCamera(type);
}
//从图片文件中识别二维码
function RecogBarCodeFromFile(type) {
var imgpath = "D:\\123.jpg";
Cam_RecogQrBarCodeFromFile(type, imgpath);
}
//添加要合并的PDF文件
function ToAddPDFFile() {
// Cam_AddImgFileToPDF("D:\\1.jpg");
// sleep(100);
// Cam_AddImgFileToPDF("D:\\2.jpg");
// sleep(100);
// Cam_AddImgFileToPDF("D:\\3.jpg");
// sleep(100);
Cam_AddImgFileToPDF("");
sleep(100);
}
/*---------------------------------------------------
-------- 添加合并的PDF文件返回结果 ---------
----------------------------------------------------*/
function AddImgFileToPDFResultCB(flag, base64Str) {
if (flag == 0) {
window.parent.postMessage({ message: "添加合并的PDF文件成功", messageId: messageId }, "*");
var obj = document.getElementById("CameraPhoto");
obj.src = "data:;base64," + base64Str;
} else {
window.parent.postMessage({ error: "添加合并的PDF文件失败", messageId: messageId }, "*");
}
}
//PDF合并测试
function ToCombinePDF() {
Cam_CombinePDF("D:\\test.pdf");
//Cam_CombinePDF("");
}
/*---------------------------------------------------
-------- (必须重写该函数)合并PDF结果 ---------
----------------------------------------------------*/
function PdfCombineResultCB(flag, PdfBase64Str) {
if (flag == 0) {
window.parent.postMessage({ message: "合并PDF完成, messageId: messageId" }, "*");
console.log(PdfBase64Str);
} else {
window.parent.postMessage({ error: "合并PDF失败", messageId: messageId }, "*");
}
}
//添加要合并的图像文件
var MergeCount = 0;
function ToAddMergeImageFile() {
MergeCount++;
if (MergeCount > 4) {
window.parent.postMessage(
{ error: "提示:图像合并最多支持四页合并", messageId: messageId },
"*"
);
return;
}
Cam_AddMergeImageFile("");
sleep(100);
}
/*---------------------------------------------------
-------- 添加合并图像文件返回结果 ---------
----------------------------------------------------*/
function AddMergeImageFileResultCB(flag, base64Str) {
if (flag == 0) {
window.parent.postMessage({ message: "添加合并图像文件成功", messageId: messageId }, "*");
var obj = document.getElementById("CameraPhoto");
obj.src = "data:;base64," + base64Str;
} else {
window.parent.postMessage({ error: "添加合并图像文件失败", messageId: messageId }, "*");
}
}
//图像合并测试
function ToMergeImages() {
MergeCount = 0;
Cam_MergeImages("D:\\merge.jpg", 0);
}
/*---------------------------------------------------
-------- (必须重写该函数)图像合并结果 ---------
----------------------------------------------------*/
function MergeImagesResultCB(flag, base64Str) {
if (flag == 0) {
window.parent.postMessage({ message: "图像合并完成" , messageId: messageId}, "*");
var obj = document.getElementById("CameraPhoto");
obj.src = "data:;base64," + base64Str;
} else {
window.parent.postMessage({ error: "图像合并失败", messageId: messageId }, "*");
}
}
/*---------------------------------------------------
-------(必须重写该函数)获取驱动盘符返回结果--------
----------------------------------------------------*/
function GetDriveResultCB(driveStr) {
if (driveStr == "") {
window.parent.postMessage({ error: "获取盘符失败", messageId: messageId }, "*");
} else {
window.parent.postMessage({ message: "获取盘符:" + driveStr , messageId: messageId}, "*");
}
}
//设置水印
function toSetWaterMarkParams() {
var isAddMark;
var isAddTime;
var wTransp;
var wPos;
var wSize;
var wColor;
var szInfo;
var obj = document.getElementById("Checkbox3");
if (obj.checked) isAddMark = 1;
else isAddMark = 0;
obj = document.getElementById("Checkbox4");
if (obj.checked) isAddTime = 1;
else isAddTime = 0;
szInfo = document.getElementById("Text1").value; //水印内容
wTransp = parseInt(document.getElementById("Text2").value); //透明度
wSize = parseInt(document.getElementById("Text3").value); //水印大小
wPos = document.getElementById("Select1").selectedIndex; //水印位置
wColor = document.getElementById("Select2").selectedIndex; //水印颜色
SetWaterMark(
isAddMark,
0,
isAddTime,
wTransp,
wPos,
wSize,
wColor,
szInfo
); //生效水印设置
}
//删除文件
function ToDeleteFile() {
var path = "D:\\20220623140215.jpg";
DeleteFile(path);
}
//删除文件返回结果
function GetDeleteFileResultCB(flag) {
if (flag == 0) {
window.parent.postMessage({ message: "删除文件成功", messageId: messageId }, "*");
} else {
window.parent.postMessage({ error: "删除文件失败!", messageId: messageId }, "*");
}
}
</script>
<body onload="LoadCameraDocument()">
<div
style="
width: 602px;
height: 400px;
border: 1px solid white;
background: #dedebe;
font-size: 14px;
float: left;
"
>
<div id="Div1" style="width: 600px; height: 300px">
<div
id="CameraCtl"
style="width: 600px; height: 300px; float: left"
></div>
</div>
<div style="visibility: hidden">
设备
<select
style="width: 140px"
id="DevName"
onchange="SelectDevice()"
></select>
分辨率
<select
style="width: 140px"
id="DevResolution"
onchange="SelectResolution()"
></select>
<input type="button" value=" 打开设备 " onclick="toOpenCamera();" />
<input type="button" id="closeDeviceButton" onclick="toCloseModal()" />
<br />
裁切模式:
<input
id="Radio1"
name="R1"
type="radio"
value="V1"
onclick="SetCameraCutMode()"
checked="checked"
/>不裁切
<input
id="Radio2"
name="R1"
type="radio"
value="V2"
onclick="SetCameraCutMode()"
/>手动裁切
<input
id="Radio3"
name="R1"
type="radio"
value="V3"
onclick="SetCameraCutMode()"
/>自动裁切
<input
id="Radio4"
name="R1"
type="radio"
value="V4"
onclick="SetCameraCutMode()"
/>自定义
<br />
文件格式:
<select id="FileType" onchange="toSetFileType()">
<option value="0">jpg</option>
<option value="1">png</option>
<option value="2">tif</option>
<option value="3">pdf</option>
</select>
色彩模式:
<select id="ColorMode" onchange="toSetColorModel()">
<option value="0">彩色</option>
<option value="1">灰度</option>
<option value="2">黑白</option>
</select>
图像质量:
<select id="JpgQuality" onchange="toSetJpgQuality()">
<option value="0">10</option>
<option value="1">20</option>
<option value="2">30</option>
<option value="3">40</option>
<option value="4">50</option>
<option value="5" selected="true">60</option>
<option value="6">70</option>
<option value="7">80</option>
<option value="8">90</option>
<option value="9">100</option>
</select>
<input
id="Checkbox1"
type="checkbox"
onclick="toSetDeleteBlackEdge()"
/>
去黑边
<input id="Checkbox2" type="checkbox" onclick="toSetDeleteBgColor()" />
去底色
</div>
<br />
<div style="border: 1px dashed #000; visibility: hidden; height: 0">
<input id="Checkbox3" type="checkbox" /> 添加水印 水印内容<input
id="Text1"
type="text"
value="水印测试"
/>
透明度<input id="Text2" type="text" value="127" style="width: 40px" />
大小<input id="Text3" type="text" value="80" style="width: 40px" />
<br />
位置
<select id="Select1">
<option value="0">左上</option>
<option value="1">右上</option>
<option value="2">左下</option>
<option value="3">右下</option>
<option value="4">中间</option>
</select>
颜色
<select id="Select2">
<option value="0">红色</option>
<option value="1">绿色</option>
<option value="2">蓝色</option>
<option value="3">青色</option>
<option value="4">黄色</option>
<option value="5">白色</option>
<option value="6">黑色</option>
</select>
<input id="Checkbox4" type="checkbox" /> 添加时间水印
<input
type="button"
value="生效水印参数设置"
onclick="toSetWaterMarkParams()"
/>
</div>
<br />
<div style="visibility: hidden; height: 0; margin-bottom: 20px">
<input type="button" value="获取盘符" onclick="GetDrives();" />
<input type="button" value="放大" onclick="Cam_ZoomIn();" />
<input type="button" value="缩小" onclick="Cam_ZoomOut();" />
<input type="button" value="适屏" onclick="Cam_BestSize();" />
<input type="button" value="1:1" onclick="Cam_TrueSize();" />
<input type="button" value="左旋" onclick="Cam_RotateLeft();" />
<input type="button" value="右旋" onclick="Cam_RotateRight();" />
<input type="button" value="对焦" onclick="Cam_Focus();" />
<input type="button" value="设置" onclick="Cam_ShowVideoProp();" />
<input type="button" value="拍照" onclick="TakePhoto();" />
<!-- <input type="button" value="读身份证" onclick="GetIdCardInfo();" /> -->
<input
type="button"
value="从摄像头中识别二维码"
onclick="RecogQrCodeFromCamera(1);"
/>
<!-- <input type="button" value="从图片中识别二维码" onclick="RecogBarCodeFromFile(1);" /> -->
<input
type="button"
value="添加合并PDF文件"
onclick="ToAddPDFFile();"
/>
<input type="button" value="合并PDF" onclick="ToCombinePDF();" />
<!-- <input type="button" value="添加合并图像文件" onclick="ToAddMergeImageFile();" />
<input type="button" value="合并图像" onclick="ToMergeImages();" /> -->
<!-- <input type="button" value="删除文件" onclick="ToDeleteFile();" /> -->
<!-- <input type="button" value="上传" onclick="HttpUploadFile();" /> -->
</div>
<input
style="width: 100%; height: 30px"
type="button"
value="拍照"
onclick="TakePhoto();"
/>
<div></div>
</div>
<div
style="
width: 202px;
border: 1px solid white;
background: #dedebe;
font-size: 14px;
float: left;
display: none;
"
>
拍照图片
<br />
<img id="CameraPhoto" src="" style="width: 200px" />
</div>
</body>
</html>