diff --git a/yq-admin/src/main/java/yq/web/controller/mine/MineFaceController.java b/yq-admin/src/main/java/yq/web/controller/mine/MineFaceController.java index 21da311..6915014 100644 --- a/yq-admin/src/main/java/yq/web/controller/mine/MineFaceController.java +++ b/yq-admin/src/main/java/yq/web/controller/mine/MineFaceController.java @@ -96,8 +96,7 @@ public class MineFaceController extends BaseController if(!file.exists()) { throw new ServiceException("文件不存在"); } - FileInputStream fileInputStream = new FileInputStream(file); - byte[] bytes = FaceEnginUtil.uploadInput(fileInputStream); + byte[] bytes = FaceEnginUtil.uploadInput(file); mineFace.setFaceByte(bytes); } return toAjax(mineFaceService.insertMineFace(mineFace)); diff --git a/yq-common/src/main/java/yq/common/utils/FaceEnginUtil.java b/yq-common/src/main/java/yq/common/utils/FaceEnginUtil.java index bca8ef8..5561c2f 100644 --- a/yq-common/src/main/java/yq/common/utils/FaceEnginUtil.java +++ b/yq-common/src/main/java/yq/common/utils/FaceEnginUtil.java @@ -23,6 +23,8 @@ import java.io.InputStream; import java.util.ArrayList; import java.util.List; +import static com.arcsoft.face.toolkit.ImageFactory.getRGBData; + /** * minio文件上传工具类 @@ -86,18 +88,9 @@ public class FaceEnginUtil { * 录入人脸接口存入byte数组特征值 * @return */ - public static byte[] uploadInput(InputStream inputstream) { + public static byte[] uploadInput(File file) { FaceEngine faceEngine = FaceEnginUtil.init(); - ImageInfo imageInfo = null; - try { - imageInfo = ImageFactory.getRGBData(inputstream); - if (inputstream != null) { - inputstream.close(); - } - } catch (IOException e) { - throw new ServiceException("文件非图像类型"); - } - + ImageInfo imageInfo = getRGBData(file); List faceInfoList = new ArrayList(); faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList); //特征提取 @@ -114,32 +107,25 @@ public class FaceEnginUtil { * @param faceFeature1 数据库人脸存根 * @return float 数据判断大于0.7以上 */ - public static float uploadContrast(MultipartFile file,Byte[] faceFeature1) { + public static float uploadContrast(File file,byte[] faceFeature1) { + + FaceFeature targetFaceFeature = new FaceFeature(); + targetFaceFeature.setFeatureData(faceFeature1); + FaceEngine faceEngine = FaceEnginUtil.init(); - InputStream inputstream = null; - ImageInfo imageInfo = null; - try { - inputstream = file.getInputStream(); - imageInfo = ImageFactory.getRGBData(inputstream); - if (inputstream != null) { - inputstream.close(); - } - } catch (IOException e) { - throw new ServiceException("文件非图像类型"); - } + ImageInfo imageInfo = getRGBData(file); List faceInfoList = new ArrayList(); faceEngine.detectFaces(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList); + //特征提取 FaceFeature faceFeature = new FaceFeature(); faceEngine.extractFaceFeature(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList.get(0), faceFeature); - byte[] featureData = faceFeature.getFeatureData(); - //特征比对 - FaceFeature targetFaceFeature = new FaceFeature(); - targetFaceFeature.setFeatureData(featureData); + FaceFeature sourceFaceFeature = new FaceFeature(); sourceFaceFeature.setFeatureData(faceFeature.getFeatureData()); FaceSimilar faceSimilar = new FaceSimilar(); + //特征比对 faceEngine.compareFaceFeature(targetFaceFeature, sourceFaceFeature, faceSimilar); FaceEnginUtil.close(faceEngine); return faceSimilar.getScore();