2017-03-01 11 views
0

私のアンドロイドアプリケーションからバックカメラで画像をキャプチャしていますが、使用しているコードはうまく動作しますが、キャプチャされた画像がぼやけているという問題があります。setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);捕らえられたぼかしですから、どうやってこのぼかし効果を取り除くことができますか教えてください。バックカメラでキャプチャした画像がぼやけている

コード:この程度

import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Matrix; 
import android.hardware.Camera; 
import android.os.Environment; 
import android.view.SurfaceView; 
import java.io.File; 
import java.io.FileOutputStream; 


public class PhotoCapture { 

    public static void takeSnapShots(Context context) { 

     SurfaceView surface = new SurfaceView(context); 
     Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); 
     Camera camera = Camera.open(); 
     int cameraCount = Camera.getNumberOfCameras(); 

     Camera.Parameters p = camera.getParameters(); 
     p.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO); 
     camera.setParameters(p); 

     try { 
      camera.setPreviewDisplay(surface.getHolder()); 
      camera.startPreview(); 
      camera.takePicture(null, null, jpegCallback); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    private static Camera.PictureCallback jpegCallback = new Camera.PictureCallback() { 

     public void onPictureTaken(byte[] data, Camera camera) { 
      String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)+ File.separator+"picure.jpg"; 
      File pictureFile = new File(path); 

      try { 
       FileOutputStream outputStream = new FileOutputStream(pictureFile); 
       Bitmap realImage = BitmapFactory.decodeByteArray(data, 0, data.length); 
       Matrix mtx = new Matrix(); 
       mtx.setRotate(90); 
       realImage = Bitmap.createBitmap(realImage, 0, 0, realImage.getWidth(), realImage.getHeight(), mtx, true); 
       realImage.compress(Bitmap.CompressFormat.JPEG, 100, outputStream); 
       outputStream.close(); 
      } 
      catch (Exception e) { 
       e.printStackTrace(); 
      } 
      finally { 
       camera.stopPreview(); 
       camera.setPreviewCallback(null); 
       camera.release(); 
       camera = null; 
      } 
     } 
    }; 
} 

答えて

1

どのように?

 camera.startPreview(); 
     camera.autoFocus(new AutoFocusCallback() { 
      @Override 
      public void onAutoFocus(boolean success, Camera camera) { 
       if(success){ 
        camera.takePicture(null, null, jpegCallback); 
       } 
      } 
     }); 
関連する問題