package com.example.datalibrary.manager; 
 | 
  
 | 
import android.graphics.Bitmap; 
 | 
  
 | 
import com.baidu.idl.main.facesdk.model.BDFaceImageInstance; 
 | 
import com.example.datalibrary.model.BDLiveConfig; 
 | 
import com.example.datalibrary.model.LivenessModel; 
 | 
import com.example.datalibrary.utils.BitmapUtils; 
 | 
  
 | 
import java.util.concurrent.ExecutorService; 
 | 
import java.util.concurrent.Executors; 
 | 
import java.util.concurrent.Future; 
 | 
  
 | 
public class SaveImageManager { 
 | 
    private static class HolderClass { 
 | 
        private static final SaveImageManager SAVE_IMAGE_MANAGER = new SaveImageManager(); 
 | 
    } 
 | 
  
 | 
    public static SaveImageManager getInstance() { 
 | 
        return SaveImageManager.HolderClass.SAVE_IMAGE_MANAGER; 
 | 
    } 
 | 
  
 | 
    private ExecutorService es3 = Executors.newSingleThreadExecutor(); 
 | 
    private Future future3; 
 | 
    public void saveImage(final LivenessModel livenessModel , final BDLiveConfig bdLiveConfig){ 
 | 
        // 检测结果输出 
 | 
        if (future3 != null && !future3.isDone()) { 
 | 
            return; 
 | 
        } 
 | 
  
 | 
        future3 = es3.submit(new Runnable() { 
 | 
            @Override 
 | 
            public void run() { 
 | 
                String currentTime = System.currentTimeMillis() + ""; 
 | 
                BDFaceImageInstance rgbImage = livenessModel.getBdFaceImageInstance(); 
 | 
                BDFaceImageInstance nirImage = livenessModel.getBdNirFaceImageInstance(); 
 | 
                BDFaceImageInstance depthImage = livenessModel.getBdDepthFaceImageInstance(); 
 | 
                if (rgbImage != null){ 
 | 
                    Bitmap bitmap = BitmapUtils.getInstaceBmp(rgbImage); 
 | 
                    if (livenessModel.getRgbLivenessScore() > bdLiveConfig.rgbLiveScore){ 
 | 
                        saveImage(bitmap, "Save-Image" + "/" + currentTime, 
 | 
                                currentTime + "_RGB_Feature"); 
 | 
                    }else { 
 | 
  
 | 
                        saveImage(bitmap, "Save-Image" + "/" + currentTime, 
 | 
                                currentTime + "_RGB_Live"); 
 | 
                    } 
 | 
                    if (!bitmap.isRecycled()){ 
 | 
                        bitmap.recycle(); 
 | 
                    } 
 | 
                    rgbImage.destory(); 
 | 
                } 
 | 
                if (nirImage != null){ 
 | 
                    Bitmap bitmap = BitmapUtils.getInstaceBmp(nirImage); 
 | 
                    if (livenessModel.getIrLivenessScore() > bdLiveConfig.nirLiveScore){ 
 | 
                        saveImage(bitmap, "Save-Image" + "/" + currentTime, 
 | 
                                currentTime + "_NIR_Feature"); 
 | 
                    }else { 
 | 
                        saveImage(bitmap, "Save-Image" + "/" + currentTime, 
 | 
                                currentTime + "_NIR_Live"); 
 | 
                    } 
 | 
                    if (!bitmap.isRecycled()){ 
 | 
                        bitmap.recycle(); 
 | 
                    } 
 | 
                    nirImage.destory(); 
 | 
                } 
 | 
                if (depthImage != null){ 
 | 
                    Bitmap bitmap = BitmapUtils.getInstaceBmp(depthImage); 
 | 
                    if (livenessModel.getDepthLivenessScore() > bdLiveConfig.depthLiveScore){ 
 | 
                        saveImage(bitmap, "Save-Image" + "/" + currentTime, 
 | 
                                currentTime + "_Depth_Feature"); 
 | 
                    }else { 
 | 
                        saveImage(bitmap, "Save-Image" + "/" + currentTime, 
 | 
                                currentTime + "_Depth_Live"); 
 | 
                    } 
 | 
                    if (!bitmap.isRecycled()){ 
 | 
                        bitmap.recycle(); 
 | 
                    } 
 | 
                    depthImage.destory(); 
 | 
                } 
 | 
  
 | 
            } 
 | 
        }); 
 | 
    } 
 | 
    private void saveImage(Bitmap bitmap, String url, String name) { 
 | 
        BitmapUtils.saveRgbBitmap(bitmap, url, name); 
 | 
    } 
 | 
} 
 |