2012-09-26 40 views
5

Tôi đang sử dụng các thông số sau cho máy ảnh tùy chỉnh của tôiAndroid Tuỳ chỉnh chất lượng máy ảnh

mCamera = getCameraInstance(); 

params = mCamera.getParameters(); 
params.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO); 
params.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE); 
params.setSceneMode(Camera.Parameters.SCENE_MODE_AUTO); 
params.setWhiteBalance(Camera.Parameters.WHITE_BALANCE_AUTO); 
params.setExposureCompensation(0); 
params.setPictureFormat(ImageFormat.JPEG); 
params.setJpegQuality(100); 
params.setRotation(90); 

List<Size> sizes = params.getSupportedPictureSizes(); 
Camera.Size size = sizes.get(0); 
params.setPictureSize(size.width, size.height); 

mCamera.setParameters(params); 

Và sau khi một bức ảnh được thực hiện, chất lượng hình ảnh khá xấu. Tôi có tự động lấy nét và sử dụng đèn flash.

Đây là phương pháp của tôi đã dành ảnh ..

mCamera.autoFocus(new Camera.AutoFocusCallback() { 
    ShutterCallback shutterCallback = new ShutterCallback() { 

     @Override 
     public void onShutter() { 
      AudioManager mgr = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
      mgr.playSoundEffect(AudioManager.FLAG_PLAY_SOUND); 
     } 
    }; 

    PictureCallback pictureCallback = new PictureCallback() { 

     @Override 
     public void onPictureTaken(byte[] data, 
       Camera camera) { 
      ... 
     } 
    }; 

    public void onAutoFocus(boolean success, Camera camera) { 
     mCamera.takePicture(shutterCallback, 
       null, null, pictureCallback); 
    } 
}); 

Nó đặc biệt xấu khi đèn flash không lửa (Tôi đang sử dụng đèn flash tự động) và căn phòng tôi đang ở cũng được thắp sáng ..

Trả lời

8

Khi bạn sử dụng getSupportedPictureSizes(), nó không nhất thiết phải trả lại chúng theo thứ tự bất kỳ. Nó có thể trở lại một kích thước khủng khiếp trong sizes.get(0). Bạn nên so sánh chúng để tìm kích thước lớn nhất nếu bạn muốn có chất lượng tốt nhất. Một cái gì đó như:

List<Size> sizes = params.getSupportedPictureSizes(); 
Camera.Size size = sizes.get(0); 
for(int i=0;i<sizes.size();i++) 
{ 
    if(sizes.get(i).width > size.width) 
     size = sizes.get(i); 
} 
params.setPictureSize(size.width, size.height); 
+0

Vâng, kích thước phù hợp ngay bây giờ, nhưng tôi vẫn thấy các cạnh khá lởm chởm trên hình ảnh .. điều này có liên quan gì đó với việc lắp hình ảnh vào màn hình vì hình ảnh cuối cùng, một lần được lưu là tốt .. – Rabbott

+0

Có lẽ một cái gì đó tương tự với kích thước xem trước. Hãy thử gây rối với 'getSupportedPreviewSizes()' cho điều đó. Hãy thử tìm một đối tượng phù hợp nhất với khía cạnh/kích thước của cửa sổ xem trước của bạn. – Geobits

Các vấn đề liên quan