2012年7月11日水曜日

AutofocusでJPEG保存


     //*************************
    // Auto Focus後に画像を保存
    //*************************
        private Camera.AutoFocusCallback mAutoFocusListener =
           new Camera.AutoFocusCallback() {
           public void onAutoFocus(boolean success, final Camera camera)
           {
            Log.v(TAG, "AutoFocued");
            //camera.autoFocus(null); //これがあるとフォーカスのとれた画像が取れない
             camera.takePicture(null, null, jpgList);            
           }
         
        };


        private PictureCallback jpgList = new PictureCallback() {
       
        public void onPictureTaken(byte[] data, Camera camera)
        {
                 if (data != null)
                 {
                 //JPEGdataそのままファイル保存
            _path = DATA_PATH + "ocr.jpg";  
            try {
FileOutputStream foStream = new FileOutputStream(_path);
foStream.write(data);
foStream.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
camera.startPreview();
return;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
camera.startPreview();
return;
}
            Log.v(TAG, "onPictureTaken");  
                }
                 camera.startPreview();
        }
        };


Carema PreviewをJPEGに保存


ただしフォーカスはうまくとれない
AutoFocusCallback後にtakePictureするほうが良い

      private Camera.PreviewCallback mPrevCallback = new Camera.PreviewCallback()
      {
          //@Override
          public void onPreviewFrame(byte[] data, Camera camera)
          {
        Log.v(TAG, "Preview ");

              if (data != null)
              {
             
           //rawデータをJPEGファイルに変換
              Log.v(TAG, "Save JPEG " + _path);
              camera.addCallbackBuffer(data);
               Camera.Parameters params = camera.getParameters();
               Camera.Size size = params.getPreviewSize();
               YuvImage image =new YuvImage(data,params.getPreviewFormat(),
                size.width, size.height, null);
               File file = new File(_path);
               FileOutputStream out = null;
               try {
out= new FileOutputStream(file);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
               image.compressToJpeg(
                       new Rect(0, 0, image.getWidth(), image.getHeight()), 100,
                       out);
               try {
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
                                         
              }

          camera.startPreview();

          }
         
      };