2014-12-09 2 views
0

저는 android devlopment에 새로 왔습니다. 카메라 앱을 만들고 있는데, 인터넷에 너무 많은 해결책이 있지만 문제가 해결되지 않았습니다. 이미지를 자동으로 캡처하여 서버에 업로드합니다. 그러나 올바른 방향으로 가로 모드로 모든 이미지를 가져옵니다. 올바른 방향으로 배치되어 있지 않습니다. 미리보기시 내 화면이 내 코드를 잘하지 않는 캡처 이미지의 우측하지만 이미지 방향을 회전하는카메라 API를 사용하여 Android 앱 만들기

공공 무효 surfaceChanged (SurfaceHolder에 홀더, INT 형식 INT w, INT의 시간) {

// Now that the size is known, set up the camera parameters and begin 
    // the preview. 
    try { 
     Camera.Parameters parameters= camera.getParameters();   
     parameters = camera.getParameters();    
     //camera.setParameters(parameters);    
     setCameraDisplayOrientation(Preview.this,0, camera, parameters); 
     //camera.setParameters(parameters); 
     parameters.getPictureSize(); 
     parameters.setPictureSize(w, h); 
     parameters.getPreviewSize(); 
     parameters.setPreviewSize(w, h);    
     camera.startPreview(); 
     } catch(Exception e) { 
     Log.d(TAG, "Cannot start preview", e);  
    } 
} 

public static void setCameraDisplayOrientation(Activity activity, 
     int cameraId, android.hardware.Camera camera, Camera.Parameters parameters {android.hardware.Camera.CameraInfo info = 
     new android.hardware.Camera.CameraInfo(); 
     android.hardware.Camera.getCameraInfo(cameraId, info); 
     int rotation = activity.getWindowManager().getDefaultDisplay().getRotation(); 
     int degrees = 0; 
     switch (rotation) { 
     case Surface.ROTATION_0: degrees = 0; break; 
     case Surface.ROTATION_90: degrees = 90; break; 
     case Surface.ROTATION_180: degrees = 180; break; 
     case Surface.ROTATION_270: degrees = 270; break; 
     } 
     int result; 
     if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { 
     result = (info.orientation + degrees) % 360; 
     result = (360 - result) % 360; // compensate the mirror 
     } else { // back-facing 
     result = (info.orientation - degrees + 360) % 360; 
     } 
     //parameters.setRotation(result); 
     camera.setDisplayOrientation(result);   
     camera.setParameters(parameters); 
     } 

답변

0

당신 camera.setParameters를 호출하기 전에 적절한 값으로 parameters.setRotation을 호출해야합니다. 미리보기 디스플레이의 방향과 관계없이 캡처 된 JPEG 이미지의 방향을 조정합니다.

올바르게) setRotation를 (호출하는 방법에 대한 샘플 코드에 대한 안드로이드 문서를 참조하십시오 : setRotation documentation

관련 문제