2014-12-09 81 views
0

我是android開發中的新手。 我正在製作一個相機應用程序我堅持點我已經在網上有這麼多的解決方案,但我的問題是不解決請幫助。 我自動捕捉圖像並將其上傳到服務器上但是我以正確的方向獲取了橫向模式下的所有圖像,否則其方向不正確。在預覽的時候我的顯示器旋轉拍攝圖像​​的權利,但圖像的方向是不對我的代碼是使用相機api創建一個android應用程序

公共無效surfaceChanged(SurfaceHolder架,INT格式,INT W,INT 1H){

// 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(示例代碼Android文檔): setRotation documentation