2012-01-12 46 views
4

我的问题捕获的图像在我的应用程序中看起来很模糊,因为用设备相机组件拍摄的图像看起来不错 - 一旦用户单击捕获按钮时会自动缩放效果。可以有人帮助我实现这种情况应该如何以及在哪里应用。捕获的相机图像看起来模糊

这里是代码:

public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) { 
    // Now that the size is known, set up the camera parameters and begin 
    // the preview. 
    Camera.Parameters parameters = camera.getParameters(); 
    Integer version = Integer.parseInt(Build.VERSION.SDK); 
    if(version > Build.VERSION_CODES.ECLAIR_MR1) 
    { 
     Log.d(TAG, "------> version greater than eclari 2.1"); 
     List<Size> sizes = parameters.getSupportedPreviewSizes(); 
     Size optimalSize = getOptimalPreviewSize(sizes, width, height); 
     parameters.setPreviewSize(optimalSize.width, optimalSize.height); 
    } 
    else 
    { 
     Log.d(TAG, "------> version less than eclari 2.1"); 
     parameters.setPreviewSize(ApplicationInitiator.screenW,ApplicationInitiator.screenH); 
    } 

    List<String> focusModes = parameters.getSupportedFocusModes(); 
    if (focusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)) 
    { 
     parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO); 
    } 

    parameters.setJpegQuality(100); 
    camera.setParameters(parameters); 
    camera.startPreview(); 
} 

回答

11

好了,你的文字你谈论捕获的图像,但我没有看到你的代码,任何关于拍照,无论如何,如果你想获得一张焦点照片,你需要做的就是注册一个AutoFocusCallback以获得焦点时拍照:

Camera.AutoFocusCallback mAutoFocusCallback = new Camera.AutoFocusCallback() { 
    @Override 
    public void onAutoFocus(boolean success, Camera camera) { 
     camera.takePicture(null, null, mPictureCallbackRaw); 
    } 
}; 

Camera.PictureCallback mPictureCallbackRaw = new Camera.PictureCallback() { 
    public void onPictureTaken(byte[] data, Camera c) { 
     // (...)    
    } 
}; 

public void takeFocusedPicture() { 
    mCamera.autoFocus(mAutoFocusCallback); 
} 

+0

它确实有效!非常感谢。但是,如果你只是试图调用camera.takePicture,那么你会看到模糊的表面。 – Stan 2013-04-02 19:42:38

+0

拍照前必须正确调用,否则不起作用。 – 2013-07-11 19:35:43

相关问题