Android 从我的应用程序捕获的图像仅在三星设备中旋转
我正在开发camera应用程序,在该应用程序中,我没有使用设备摄像头拍照,我已经这样做了,它工作正常,但当我们在三星设备上拍摄图像时,我将旋转图像转换为onPictureTaken回调方法 请让我知道我应该怎么做,以获得与设备方向相同的图像方向 我使用下面的代码来设置相机旋转,但在三星设备中没有帮助Android 从我的应用程序捕获的图像仅在三星设备中旋转,android,Android,我正在开发camera应用程序,在该应用程序中,我没有使用设备摄像头拍照,我已经这样做了,它工作正常,但当我们在三星设备上拍摄图像时,我将旋转图像转换为onPictureTaken回调方法 请让我知道我应该怎么做,以获得与设备方向相同的图像方向 我使用下面的代码来设置相机旋转,但在三星设备中没有帮助 Camera.CameraInfo info = new Camera.CameraInfo(); Camera.getCameraInfo(Camera.Camer
Camera.CameraInfo info = new Camera.CameraInfo();
Camera.getCameraInfo(Camera.CameraInfo.CAMERA_FACING_BACK, info);
int rotation = this.getWindowManager().getDefaultDisplay().getRotation();
int degrees = 0;
switch (rotation) {
case Surface.ROTATION_0: degrees = 0; break; //Natural orientation
case Surface.ROTATION_90: degrees = 90; break; //Landscape left
case Surface.ROTATION_180: degrees = 180; break;//Upside down
case Surface.ROTATION_270: degrees = 270; break;//Landscape right
}
int rotate = (info.orientation - degrees + 360) % 360;
Camera.Parameters param = mCamera.getParameters();
param.setRotation(rotate);
mCamera.setParameters(param);
我有一个有趣的建议,我在我的一个项目中也做过。我假设您使用的是imageView和位图。现在将旋转代码转换为旋转90度的方法。然后在图像上添加一个透明按钮。每次点击图像(也点击按钮),图像将旋转90度!! 例如,您可以编写这样的旋转方法
public static Bitmap rotateBitmap(Bitmap source)
{
Matrix matrix = new Matrix();
matrix.postRotate(90);
return Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, true);
}
然后,假设您在图像上添加了一个透明按钮“旋转器”,您可以如下设置它的onClickListener。它同时设置位图和图像视图
rotater.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
originalBitmap=rotateBitmap(originalBitmap);
imageView.setImageBitmap(originalBitmap);
}
});
由于图像的EXIF数据,图像旋转是一个问题。希望这个技巧适合你的需要