满足条件时捕获图像

Posted

技术标签:

【中文标题】满足条件时捕获图像【英文标题】:Capture image when conditions are met 【发布时间】:2014-09-02 12:22:51 【问题描述】:

大家好,

我正在开发一个应用程序,我需要在满足某些条件时捕获图像。到目前为止,我有一个 SurfaceView 预览后置摄像头,我的所有条件都完成了。我想让相机在满足某些条件时拍照。用户使用该应用程序时将拍摄不止一张照片。所以预览会一直持续到满足所有条件。关于如何做到这一点的任何建议?谢谢!

解决方案: 我找到了其中的一些代码并进行了处理。

Camera.ShutterCallback myShutterCallback = new Camera.ShutterCallback() 
    public void onShutter() 
      // TODO bl
    
  ;

  PictureCallback myPictureCallback_RAW = new PictureCallback() 

    public void onPictureTaken(byte[] arg0, Camera arg1) 
        // TODO Auto-generated method stub

    
  ;
  PictureCallback myPictureCallback_JPG = new PictureCallback()

    @Override
    public void onPictureTaken(byte[] data, Camera camera) 
            File imagesFolder = new File(Environment.getExternalStorageDirectory(), "/ImagesFromCamera");
            imagesFolder.mkdirs(); 
            //Unix time stamp for unique file naming. 
            long unixTime = System.currentTimeMillis() / 1000L; 
            String fileName = "image"+ unixTime +".jpg";
            File output = new File(imagesFolder, fileName);
            try 
                FileOutputStream fos = new FileOutputStream(output);
                fos.write(data);
                fos.close();
             catch (FileNotFoundException e) 
                // TODO Auto-generated catch block
                e.printStackTrace();
            
            catch (IOException e) 
                // TODO Auto-generated catch block
                e.printStackTrace();
            
            // Notify the user when the image is taken. 
                Toast.makeText(CustomCameraActivity.this, 
                        "Image saved.", 
                        Toast.LENGTH_SHORT).show();
            //Continue the Preview as it will stop once an image is taken.  
            camera.startPreview();
            
    ;

            //Will call the camera to take a photo.
        camera.takePicture(myShutterCallback, myPictureCallback_RAW, myPictureCallback_JPG);

【问题讨论】:

查看一些代码并至少了解您的情况会有所帮助。 【参考方案1】:

此时你需要在满足条件时调用摄像头上的takePicture()。然后 startPreview()onPictureTaken() 回调的第一行中,您必须提供该回调才能使相机继续。

当所有条件都满足时,还请务必在使用相机的 Activity 的onPause() 内离开之前release() 相机。因为这可能会给您自己在应用程序或其他程序的其他负载上带来问题。

【讨论】:

感谢您的帮助,尽管我的问题不是很清楚。它实际上把我引向了正确的方向。我已经为那些寻求帮助的人发布了上面使用的代码。

以上是关于满足条件时捕获图像的主要内容,如果未能解决你的问题,请参考以下文章

满足条件时显示 Photon Room(4 个玩家)中的一个玩家的字符串

计算另一个图像像素满足条件的像素值的平均值

分支&循环

Python条件语句

if-else

2.4 if-else