2011-07-31 6 views
1

이것은 onPreviewFrame 메서드의 코드입니다.안드로이드 카메라 해상도를 변경할 수 없습니다

surfaceHolder에 표시되는 프레임이 좋습니다.

나는 이미 첫번째

mCameraParameter = mCamera.getParameters(); 
mCameraParameter.setPreviewSize(100,150); 
mCameraParameter.setPreviewFrameRate(20); 
mCameraParameter.setPreviewFormat(PixelFormat.JPEG); 
mCamera.setParameters(mCameraParameter); 

에서이 코드를 사용하여 해상도를 설정하지만 사진은 이미지 GET는 640 * 내가 미리보기 해상도를 변경할 수없는 이유를 궁금해

480.

 public void onPreviewFrame(byte[] data, Camera camera) { 
     Log.e("PreviewCallBack", "Preview"); 


     Camera.Parameters parameters = camera.getParameters(); 
     Log.e("Picture Size", "width : " + parameters.getPreviewSize().width); 
     Log.e("Picture Size", "height : " + parameters.getPreviewSize().height); 
     Log.e("Array Size", "data.length : " + data.length); 
     YuvImage image = new YuvImage(data, parameters.getPreviewFormat(), 
       parameters.getPreviewSize().width,parameters.getPreviewSize().height, null); 


     File file = new File(Environment.getExternalStorageDirectory() 
       .getPath() + "/"+/*System.currentTimeMillis()*/"out.jpg"); 

     FileOutputStream filecon = null; 

     try { 
      filecon = new FileOutputStream(file); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 


     image.compressToJpeg(
       new Rect(0, 0, image.getWidth(), image.getHeight()), 90, 
       filecon); 
    } 
}; 
+0

'setPreviewFormat (PixelFormat.JPEG)'은 쓸모가 없습니다. 나는 이것을 지원하는 안드로이드 장치를 본 적이 없다. 자신의 예제에서'onPreviewFrame()'콜백에서받은 데이터에 대한 YUV 형식을 기대합니다. –

답변

1

setPictureSize() (미리보기가 아닌)의 크기를 설정하려면 전화해야한다고 생각합니다.

2

지원되지 않는 미리보기 크기를 설정하려고했을 수 있습니다. 더 나은 전화 "getSupportedPreviewSizes()"을 호출하고 setPreviewSize()을 호출하기 전에 설정하려는 미리보기 크기가 장치에서 지원되는지 확인하십시오.

+0

또한'Camera.Parameters.setPreviewSize()', 더 정확히는'Camera.setParameters()'는'Camera.startPreview()'이후에 호출되어서는 안됩니다. –

관련 문제