Index: ssts-web/src/main/webapp/disinfectsystem/common/camera.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/common/camera.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/common/camera.js (revision 24768) @@ -0,0 +1,49 @@ +var camera_fso = null; +var camera_shell = null; +function camera_initFileSystemObject() { + if (camera_fso) { + return; + } + try { + camera_fso = new ActiveXObject("Scripting.FileSystemObject"); + } catch (e) { + // alert(e.name + ": " + e.message); + // 一般是未添加信任站点,或者安全设置有问题 + camera_fso = null; + alert('文件系统对象初始化失败,请设置信任站点并调整安全设置!'); + } +} + +function camera_initShellObject() { + if (camera_shell) { + return; + } + try { + camera_shell = new ActiveXObject("wscript.shell"); + } catch (e) { + // alert(e.name + ": " + e.message); + // 一般是未添加信任站点,或者安全设置有问题 + camera_shell = null; + alert('shell初始化失败,请设置信任站点并调整安全设置!'); + } +} + +function camera_runCameraExe() +{ + camera_initShellObject(); + if (!camera_shell) { + return false; + } + if(!sstsConfig.cameraExePath){ + alert('未配置摄像头程序路径!'); + return false; + } + try{ + camera_shell.run(sstsConfig.cameraExePath); + return true; + }catch(e) + { + alert('找不到文件:"'+sstsConfig.cameraExePath+'"(或他的组件),请检查路径是否正确! '); + } + return false; +} \ No newline at end of file Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/action/UploadImageFileAction.java =================================================================== diff -u -r24096 -r24768 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/action/UploadImageFileAction.java (.../UploadImageFileAction.java) (revision 24096) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/imagefilemanager/action/UploadImageFileAction.java (.../UploadImageFileAction.java) (revision 24768) @@ -3,34 +3,33 @@ */ package com.forgon.disinfectsystem.tousse.imagefilemanager.action; -import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Base64; import java.util.HashMap; import java.util.List; import java.util.Map; -import javax.imageio.ImageIO; import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.commons.lang.StringUtils; -import org.apache.pdfbox.pdmodel.PDDocument; -import org.apache.pdfbox.rendering.PDFRenderer; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.hibernate.Query; import org.hibernate.Session; +import com.forgon.Constants; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.entity.basedatamanager.imagefilemanager.ImageFile; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; @@ -311,6 +310,59 @@ } + public void uploadBase64Image() { + objectID = StrutsParamUtils.getPraramValue("objectId", null); + objectType = StrutsParamUtils.getPraramValue("imageType", null); + String base64Data = StrutsParamUtils.getPraramValue("base64Data", null); + + String expensiveGoodsSupplierId = StrutsParamUtils.getPraramValue("expensiveGoodsSupplierId",null); + JSONObject json = JSONUtil.buildJsonObject(true, "上传成功!"); + boolean isSavePathExist = supplyRoomConfigManager.isSavePathExist(); + if (isSavePathExist == false) { + JSONUtil.addSuccess(json, false); + JSONUtil.addMessage(json, "文件保存目录不存在."); + } + if(StringUtils.isBlank(objectID)){ + JSONUtil.addSuccess(json, false); + JSONUtil.addMessage(json, "objectId不能为空"); + } + if(StringUtils.isBlank(objectType)){ + JSONUtil.addSuccess(json, false); + JSONUtil.addMessage(json, "objectType不能为空"); + } + if(StringUtils.isBlank(base64Data)){ + JSONUtil.addSuccess(json, false); + JSONUtil.addMessage(json, "图片数据不能为空"); + } + + try { + if (StringUtils.isNotBlank(objectID) + && StringUtils.isNotBlank(objectType) && StringUtils.isNotBlank(base64Data) && isSavePathExist) { + int index = base64Data.indexOf(","); + if(index != -1){ + base64Data = base64Data.substring(index+1); + } + Base64.Decoder decoder = Base64.getDecoder(); + byte[] imgData = decoder.decode(base64Data); + String fileName = String.format("camera_%s_%s.jpg",objectID, new SimpleDateFormat(Constants.DATEFORMAT_YYYYMMDDHHMMSS_SSS)); + List uploadImageList = new ArrayList(); + ImageFile image = new ImageFile(); + image.setImage(imgData); + image.setImageType(objectType); + image.setObjectId(objectID); + + image.setImageName(fileName); + uploadImageList.add(image); + + imageFileManager.saveImage(image); + } + } catch (Throwable e) { + e.printStackTrace(); + JSONUtil.addSuccess(json, false); + JSONUtil.addMessage(json, e.getMessage()); + } + StrutsResponseUtils.output(json); + } public void uploadImage() { objectID = StrutsParamUtils.getPraramValue("objectId", null); Index: ssts-web/src/main/webapp/disinfectsystem/test/video.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/test/video.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/test/video.js (revision 24768) @@ -0,0 +1,134 @@ + +var imgWidth = 640; +var imgHeight = 480; +var g_status = 'NotStarted'; +var message = ''; +var captured = false; +// 这段代 主要是获取摄像头的视频流并显示在Video 签中 +$(function() { + var canvas = document.getElementById("canvas") + var context = canvas + .getContext("2d") + var video = document + .getElementById("video") + var videoObj = { + "video" : true + } + var errBack = function(error) { + console.log("Video capture error: ", error.code); + }; + + +if (navigator.mediaDevices.getUserMedia) { +navigator.mediaDevices.getUserMedia(videoObj).then(function(stream) { + video.srcObject = stream; + var playPromise = video.play(); + if (playPromise !== undefined) { + playPromise.then(function() { + // Automatic playback started! + console.log("Automatic playback started!"); + }).catch(function(error) { + // Automatic playback failed. + // Show a UI element to let the user manually start playback. + console.log("Automatic playback failed.", error); + }); + } +}).catch(errBack); +} else { + +} +// 这个是拍照按钮的事件, +$("#snap").click(function() { +context.drawImage(video, 0, 0, imgWidth, imgHeight); +captured = true; +// CatchCode(); +}); + +$("#btn_upload").click(function() { + uploadImg(); + }); + +$("#btn_close").click(function() { + if(g_status == 'Uploading'){ + alert('正在上传,请稍后关闭'); + return; + } + self.close(); +}); +}); + + +function setStatus(status,message){ + g_status = status; + refreshStatus(message); +} +function refreshStatus(message){ + var s = ''; + switch(g_status){ + case 'NotStarted': + break; + case 'Uploading': + s = '正在上传...'; + break; + case 'UploadSuccess': + s = message; + break; + case 'UploadFailed': + s = message; + break; + } + $("#input_status").html(s); +} +// 定时器 +// var interval = setInterval(CatchCode, "1000"); +// 这个是 刷新上 图像的 +function uploadImg() { + if(!captured){ + alert('请先抓拍'); + return; + } + if(g_status == 'Uploading'){ + return; + } + setStatus('Uploading'); + // 实际运用可不写,测试代 , 为单击拍照按钮就获取了当前图像,有其他用途 + var canvans = document.getElementById("canvas"); + // 以下开始编 数据 + var base64Data = canvans.toDataURL('image/jpeg', 1); +// var prefix = 'data:image/jpeg;base64,'; + // 将图像转换为base64数据 + var imageType = '采集图片'; + var url = WWWROOT + '/disinfectSystem/baseData/uploadImageFileAction!uploadBase64Image.do?imageType='+imageType+'&objectId='+objectId; //这里我用struts2做后台处理 + // 在前端截取22位之后的字符串作为图像数据 + // 开始异步上 +// $.post("uploadImgCode.ashx", { +// "img" : base64Data +// }, function(data, status) { +// if (status == "success") { +// if (data == "OK") { +// alert("二维 已经解析"); +// } else { +// // alert(data); +// } +// } else { +// alert("数据上 失败"); +// } +// }, "text"); + + $.ajax({ + type: "POST", + url: url, + dataType: "json", + data: { + base64Data: base64Data + } + }).done(function(o) { + if(o.success){ + message = o.message; + setStatus('UploadSuccess',message); + }else{ + message = o.message; + setStatus('UploadFailed',message); + } + }); +} Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/imagefilemanager/ImageFile.java =================================================================== diff -u -r24075 -r24768 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/imagefilemanager/ImageFile.java (.../ImageFile.java) (revision 24075) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/imagefilemanager/ImageFile.java (.../ImageFile.java) (revision 24768) @@ -59,6 +59,7 @@ public static final String IMAGE_TYPE_AUTHORIZEDSUPPLIER= "高值耗材授权证图片"; public static final String IMAGE_TYPE_BUSINESSLICENSE= "高值耗材营业执照图片"; public static final String IMAGE_TYPE_PRODUCTIONCERTIFICATE= "高值耗材生产许可证图片"; + public static final String IMAGE_TYPE_CAMERA= "采集图片"; /** * 一次性物品证件 */ Index: ssts-web/src/main/webapp/disinfectsystem/test/video.jsp =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/test/video.jsp (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/test/video.jsp (revision 24768) @@ -0,0 +1,32 @@ +<%@ page contentType="text/html; charset=UTF-8"%> +<%@ include file="/common/taglibs.jsp"%> + + + + +拍照 + + + + + + + + + + + +
+ + + +
+
+
+ + + \ No newline at end of file