1. 概要
以下は顔認証SDKをSpring Bootアプリケーションに統合する際の推奨事項です。
2. SDK統合手順
- 対応バージョンは6.1.3が最適
8.xバージョンはサーバーとの互換性問題が確認されています。 - ライブラリパスをプロジェクト外部に配置してください。
- Spring Boot起動時にSDKを初期化し、必要に応じてAPIを呼び出せるようにします。
3. ライブラリの設定
- OSごとのdllファイルをプロジェクトのsrcディレクトリに配置(構造は変更しないでください)。
- Face.javaに条件付きインスタンス化処理を追加
@Component
@Conditional(FaceSdkCondition.class)
public class FaceService {
// SDK API実装
}
4. ライブラリロード処理
@Autowired
public FaceService(Environment env) {
String dllPath = env.getProperty("face-sdk.dllPath");
System.load(dllPath + "BaiduFaceApi.dll");
System.load(dllPath + "opencv_java320.dll");
}
5. 初期化・解放処理
@PostConstruct
public void initialize() {
int result = faceApi.sdkInit(dllPath);
if(result != 0) {
log.error("SDK初期化失敗: {}", result);
}
}
@PreDestroy
public void release() {
faceApi.sdkDestroy();
}
6. 起動条件判定クラス
public class FaceSdkCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return "true".equals(context.getEnvironment().getProperty("face-sdk.enabled"));
}
}
7. 設定ファイル
face-sdk:
enabled: true
dllPath: D:\\FaceLib\\
imagesPath: D:\\FaceImages\\
8. Maven依存設定
mvn install:install-file -DgroupId=cn.dyina \
-DartifactId=opencv-jni \
-Dversion=1.0 \
-Dfile=D:\FaceLib\opencv-320.jar
9. サービスクラス実装例
@Service
public class FaceServiceImpl {
public String registerFace(String imagePath, String userId) {
Mat imageMat = Imgcodecs.imread(imagePath);
long matrixAddress = imageMat.getNativeObjAddr();
JSONObject result = Face.userAddByMat(matrixAddress, userId, "GROUP001", "test");
return result.getString("message");
}
}
10. リクエストハンドラ
@RestController
@CrossOrigin
public class FaceController {
@PostMapping("/register")
public ResponseEntity<String> registerFace(@RequestParam String imageBase64) {
String fileName = UUID.randomUUID() + ".jpg";
Base64ToImage.saveImage(imagesPath, fileName, imageBase64);
String result = faceService.registerFace(imagesPath + fileName, "user123");
return ResponseEntity.ok(result);
}
}
11. 注意事項
- com.jni.faceパッケージ内のサンプルコードは必要に応じて削除してください。
- dbディレクトリはSDK初期化時に自動生成されます。
- ホットスワップ機能は使用しないでください。
- 商用利用の場合、ライセンス取得が必要です。