2012-09-26 30 views
5

benim özel kameraAndroid Custom Kamera Kalitesi

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); 

için aşağıdaki parametreleri kullanıyorum Ve bir fotoğraf çekildikten sonra, görüntünün kalitesi oldukça kötü. Otomatik netleme ve flaş kullanımda.

Bu fotoğraf çekmek için benim yöntemidir ..

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); 
    } 
}); 

flaş Ben de yanar olduğum yangın (ı otomatik flaş kullanıyorum) ve odayı değil yaptığında özellikle kötü ..

cevap

8

getSupportedPictureSizes()'u kullandığınızda, bunları herhangi bir sırada döndürmeniz gerekmez. Muhtemelen sizes.get(0)'da korkunç bir büyüklükte dönüyor. En iyi kaliteyi istiyorsanız, en büyük boyutu bulmak için bunları karşılaştırmalısınız. Bir şey gibi:

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

Peki, boyut tutarlıdır, ama yine de bu kez, çünkü son görüntü ekrana görüntü takılması ile ilgili bir şey var mı .. görüntülerde oldukça pürüzlü kenarları görüyorum Kaydedilen sadece iyi .. – Rabbott

+0

Muhtemelen önizleme boyutu ile benzer bir şey. Bunun için getSupportedPreviewSizes() ile uğraşmayı deneyin. Önizleme pencerenizin en/boy oranına en yakın olanı bulmaya çalışın. – Geobits