2014-12-09 49 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

相关问题