网站优化公司大家好,一键制作网站软件,建设优化网站,游戏网站设计在 写相机相关应用的时候遇到捕获的画面方向和手机的方向不一致的问题#xff0c;比如手机是竖着拿的#xff0c;但是画面是横的#xff0c;这是由于摄像头默认捕获的画面byte[]是根 据横向来的#xff0c;而你的应用是竖向的#xff0c;解决办法是调用setDisplayOrientat… 在 写相机相关应用的时候遇到捕获的画面方向和手机的方向不一致的问题比如手机是竖着拿的但是画面是横的这是由于摄像头默认捕获的画面byte[]是根 据横向来的而你的应用是竖向的解决办法是调用setDisplayOrientation来设置PreviewDisplay的方向效果就是将捕获 的画面旋转多少度显示。 设 置 preview 的顺时针旋转角度。这将影响 preview frames和拍照之后的相片显示。该方法主要用于垂直模式的应用。注意在旋转之前 front-facing cameras 的 preview显示是水平 flip 的这就是说 image 是沿着 camera sensor 的垂直中心轴来反射的。所以用户可以像照镜子一样看到他们自己。这不会影响传入函数 onPreviewFrame(byte[], Camera) 的、JPEG 相片的、或记录的 video 的 byte array 的顺序你可以自己做旋转处理。在preview 期间是不允许调用该方法的。如果你想要是你的照片和显示出来的角度一致你可以参考下列代码 [java] view plaincopy public static void setCameraDisplayOrientation (Activity activity, int cameraId, android.hardware.Camera camera) { 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; } camera.setDisplayOrientation (result); }转载于:https://www.cnblogs.com/Free-Thinker/p/3546741.html