diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java index 2e65ca3..56cb280 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -53,18 +53,20 @@ public Object imageUpload(String image_zy0,String image_zy1,String image_yy0,String image_yy1,String personId,String idCardNo) throws IOException { Map map = null; map = irisDataService.selectByPersonId(personId); - if(map!=null){ - return ResponseData.error("已存在该人员的虹膜数据"); - } if(ToolUtil.isEmpty(image_zy0)||ToolUtil.isEmpty(image_zy1) || ToolUtil.isEmpty(image_yy0) || ToolUtil.isEmpty(image_yy1)){ return ResponseData.error("有图像为空"); } IrisData irisData = new IrisData(); + if(map!=null && map.size()>0 ){ + //return ResponseData.error("已存在该人员的虹膜数据"); + irisData = irisDataService.selectById(map.get("id").toString()); + } - String leftFilePath1 = this.filePath+personId+"_left_1.bmp"; - String leftFilePath2 = this.filePath+personId+"_left_2.bmp"; + + String leftFilePath1 = this.filePath+personId+"_left_1.jpg"; + String leftFilePath2 = this.filePath+personId+"_left_2.jpg"; String rightFilePath1 = this.filePath+personId+"_right_1.bmp"; String rightFilePath2 = this.filePath+personId+"_right_2.bmp"; if(!Base64Util.Base64ToImage(image_zy0,leftFilePath1)){ @@ -83,30 +85,22 @@ BASE64Decoder decoder = new BASE64Decoder(); //左眼1 - byte[] imageBytes = decoder.decodeBuffer(image_zy0); - InputStream fis = new ByteArrayInputStream(imageBytes); - byte[] leftCode1 = getIrisCode(fis); + byte[] leftCode1 = getIrisCode(new FileInputStream(leftFilePath1)); if(leftCode1 ==null || leftCode1.length!=1024){ return ResponseData.error("左眼图像1编码失败"); } //左眼2 - imageBytes = decoder.decodeBuffer(image_zy1); - fis = new ByteArrayInputStream(imageBytes); - byte[] leftCode2 = getIrisCode(fis); + byte[] leftCode2 = getIrisCode(new FileInputStream(leftFilePath2)); if(leftCode2==null || leftCode2.length!=1024){ return ResponseData.error("左眼图像2编码失败"); } //右眼1 - imageBytes = decoder.decodeBuffer(image_yy0); - fis = new ByteArrayInputStream(imageBytes); - byte[] rightCode1 = getIrisCode(fis); + byte[] rightCode1 = getIrisCode(new FileInputStream(rightFilePath1)); if(rightCode1==null || rightCode1.length!=1024){ return ResponseData.error("右眼图像1编码失败"); } //右眼2 - imageBytes = decoder.decodeBuffer(image_yy1); - fis = new ByteArrayInputStream(imageBytes); - byte[] rightCode2 = getIrisCode(fis); + byte[] rightCode2 = getIrisCode(new FileInputStream(rightFilePath2)); if(rightCode2==null || rightCode2.length!=1024){ return ResponseData.error("右眼图像2编码失败"); } @@ -123,7 +117,12 @@ irisData.setIdCardNo(idCardNo); irisData.setPersonId(Long.valueOf(personId)); - irisDataService.insert(irisData); + + if(map!=null && map.size()>0 ){ + irisDataService.updateById(irisData); + }else { + irisDataService.insert(irisData); + } return ResponseData.success(); } @@ -153,7 +152,7 @@ //左眼1 - byte[] leftCode1 = getIrisCode(image_zy0.getInputStream()); + byte[] leftCode1 = getIrisCode(new FileInputStream(leftFilePath1)); if(leftCode1 ==null || leftCode1.length!=1024){ return ResponseData.error("左眼图像1编码失败"); } @@ -323,7 +322,7 @@ byte[] irisCode = new byte[1024]; //1.创建客户端Socket,指定服务器地址和端口 - Socket socket=new Socket("localhost", 20004); + Socket socket=new Socket("localhost", 20005); //2.获取输出流,向服务器端发送信息 OutputStream os=socket.getOutputStream();//字节输出流 diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java index 2e65ca3..56cb280 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/controller/IrisDataController.java @@ -53,18 +53,20 @@ public Object imageUpload(String image_zy0,String image_zy1,String image_yy0,String image_yy1,String personId,String idCardNo) throws IOException { Map map = null; map = irisDataService.selectByPersonId(personId); - if(map!=null){ - return ResponseData.error("已存在该人员的虹膜数据"); - } if(ToolUtil.isEmpty(image_zy0)||ToolUtil.isEmpty(image_zy1) || ToolUtil.isEmpty(image_yy0) || ToolUtil.isEmpty(image_yy1)){ return ResponseData.error("有图像为空"); } IrisData irisData = new IrisData(); + if(map!=null && map.size()>0 ){ + //return ResponseData.error("已存在该人员的虹膜数据"); + irisData = irisDataService.selectById(map.get("id").toString()); + } - String leftFilePath1 = this.filePath+personId+"_left_1.bmp"; - String leftFilePath2 = this.filePath+personId+"_left_2.bmp"; + + String leftFilePath1 = this.filePath+personId+"_left_1.jpg"; + String leftFilePath2 = this.filePath+personId+"_left_2.jpg"; String rightFilePath1 = this.filePath+personId+"_right_1.bmp"; String rightFilePath2 = this.filePath+personId+"_right_2.bmp"; if(!Base64Util.Base64ToImage(image_zy0,leftFilePath1)){ @@ -83,30 +85,22 @@ BASE64Decoder decoder = new BASE64Decoder(); //左眼1 - byte[] imageBytes = decoder.decodeBuffer(image_zy0); - InputStream fis = new ByteArrayInputStream(imageBytes); - byte[] leftCode1 = getIrisCode(fis); + byte[] leftCode1 = getIrisCode(new FileInputStream(leftFilePath1)); if(leftCode1 ==null || leftCode1.length!=1024){ return ResponseData.error("左眼图像1编码失败"); } //左眼2 - imageBytes = decoder.decodeBuffer(image_zy1); - fis = new ByteArrayInputStream(imageBytes); - byte[] leftCode2 = getIrisCode(fis); + byte[] leftCode2 = getIrisCode(new FileInputStream(leftFilePath2)); if(leftCode2==null || leftCode2.length!=1024){ return ResponseData.error("左眼图像2编码失败"); } //右眼1 - imageBytes = decoder.decodeBuffer(image_yy0); - fis = new ByteArrayInputStream(imageBytes); - byte[] rightCode1 = getIrisCode(fis); + byte[] rightCode1 = getIrisCode(new FileInputStream(rightFilePath1)); if(rightCode1==null || rightCode1.length!=1024){ return ResponseData.error("右眼图像1编码失败"); } //右眼2 - imageBytes = decoder.decodeBuffer(image_yy1); - fis = new ByteArrayInputStream(imageBytes); - byte[] rightCode2 = getIrisCode(fis); + byte[] rightCode2 = getIrisCode(new FileInputStream(rightFilePath2)); if(rightCode2==null || rightCode2.length!=1024){ return ResponseData.error("右眼图像2编码失败"); } @@ -123,7 +117,12 @@ irisData.setIdCardNo(idCardNo); irisData.setPersonId(Long.valueOf(personId)); - irisDataService.insert(irisData); + + if(map!=null && map.size()>0 ){ + irisDataService.updateById(irisData); + }else { + irisDataService.insert(irisData); + } return ResponseData.success(); } @@ -153,7 +152,7 @@ //左眼1 - byte[] leftCode1 = getIrisCode(image_zy0.getInputStream()); + byte[] leftCode1 = getIrisCode(new FileInputStream(leftFilePath1)); if(leftCode1 ==null || leftCode1.length!=1024){ return ResponseData.error("左眼图像1编码失败"); } @@ -323,7 +322,7 @@ byte[] irisCode = new byte[1024]; //1.创建客户端Socket,指定服务器地址和端口 - Socket socket=new Socket("localhost", 20004); + Socket socket=new Socket("localhost", 20005); //2.获取输出流,向服务器端发送信息 OutputStream os=socket.getOutputStream();//字节输出流 diff --git a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/util/Base64Util.java b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/util/Base64Util.java index 005f71d..40b1e2d 100644 --- a/casic-iris-register/src/main/java/com/casic/missiles/modular/register/util/Base64Util.java +++ b/casic-iris-register/src/main/java/com/casic/missiles/modular/register/util/Base64Util.java @@ -3,6 +3,9 @@ import com.casic.missiles.core.util.ToolUtil; import sun.misc.BASE64Decoder; +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; @@ -22,21 +25,31 @@ if (ToolUtil.isEmpty(imgStr)) // 图像数据为空 return false; + imgStr = imgStr.substring(imgStr.indexOf(",")+1); + BASE64Decoder decoder = new BASE64Decoder(); try { // Base64解码 byte[] b = decoder.decodeBuffer(imgStr); +// ByteArrayInputStream bais = new ByteArrayInputStream(b); +// BufferedImage bImage = ImageIO.read(bais); + for (int i = 0; i < b.length; ++i) { if (b[i] < 0) {// 调整异常数据 b[i] += 256; } } + //如果已存在图像,先删除 - File name = new File(imgFilePath); + File name = null; + name = new File(imgFilePath); if( name.exists() && name.isFile()){ name.delete(); + name = new File(imgFilePath); } + +// ImageIO.write(bImage, "bmp", name); OutputStream out = new FileOutputStream(imgFilePath); out.write(b); out.flush();