|
@@ -31,18 +31,26 @@ import java.util.List;
|
|
|
public class FaceServiceImpl implements IFaceService {
|
|
|
@Resource
|
|
|
private FaceEngineInit faceEngineInit;
|
|
|
-
|
|
|
- private FaceEngine faceEngine;
|
|
|
@Resource
|
|
|
private ISysUserExpandService expandService;
|
|
|
|
|
|
+ private FaceEngine faceEngine;
|
|
|
+ private Boolean faceEnabled;
|
|
|
+
|
|
|
+ private Float score;
|
|
|
+
|
|
|
@PostConstruct
|
|
|
public void init() {
|
|
|
faceEngine = faceEngineInit.getFaceEngine();
|
|
|
+ faceEnabled = faceEngineInit.getFaceEnabled();
|
|
|
+ score = faceEngineInit.getScore();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void detectFaces(File file) {
|
|
|
+ if (!faceEnabled) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
byte[] featureData = faceFeature(file);
|
|
|
if (featureData != null) {
|
|
|
String feature = Base64.encode(featureData);
|
|
@@ -61,6 +69,9 @@ public class FaceServiceImpl implements IFaceService {
|
|
|
* @return 特征值
|
|
|
*/
|
|
|
private byte[] faceFeature(File file) {
|
|
|
+ if (!faceEnabled) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
ImageInfo imageInfo = ImageFactory.getRGBData(file);
|
|
|
List<FaceInfo> faceInfoList = new ArrayList<>();
|
|
|
faceEngine.detectFaces(imageInfo, faceInfoList);
|
|
@@ -84,6 +95,9 @@ public class FaceServiceImpl implements IFaceService {
|
|
|
*/
|
|
|
@Override
|
|
|
public Pair<Long, Float> searchFaces(File file) {
|
|
|
+ if (!faceEnabled) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
byte[] featureData = faceFeature(file);
|
|
|
if (featureData != null) {
|
|
|
FaceFeature faceFeature = new FaceFeature();
|
|
@@ -91,7 +105,6 @@ public class FaceServiceImpl implements IFaceService {
|
|
|
SearchResult searchResult = new SearchResult();
|
|
|
faceEngine.searchFaceFeature(faceFeature, CompareModel.LIFE_PHOTO, searchResult);
|
|
|
int userId = searchResult.getFaceFeatureInfo().getSearchId();
|
|
|
-// System.err.println(searchResult.getFaceFeatureInfo().getSearchId());
|
|
|
|
|
|
//特征比对
|
|
|
FaceSimilar faceSimilar = new FaceSimilar();
|
|
@@ -103,4 +116,20 @@ public class FaceServiceImpl implements IFaceService {
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 使用人脸登录
|
|
|
+ *
|
|
|
+ * @param upFile 人脸图片
|
|
|
+ * @return 登录成功后返回用户ID,否则返回0
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Long faceLogin(File upFile) {
|
|
|
+ Pair<Long, Float> pair = searchFaces(upFile);
|
|
|
+ if (pair != null && pair.getValue() > score) {
|
|
|
+ return pair.getKey();
|
|
|
+ } else {
|
|
|
+ return 0L;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|