我在相机应用程序上工作,我没有使用设备相机拍照,我已经做了它工作正常但是当我们在三星设备上捕捉图像时,我将旋转图像转换为onPictureTaken回调方法。
请让我知道如何使图像与设备方向的方向相同。
我使用以下代码来设置相机旋转,但它在三星设备中无效。
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);
答案 0 :(得分:0)
我有一个有趣的建议,我也在其中一个项目中做过。我假设你使用的是imageView和Bitmap。现在将您的旋转代码转换为旋转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);
}
然后,假设您添加了一个透明按钮" rotater"在图像上,您可以按如下方式设置onClickListener。它都设置了Bitmap和imageView。
rotater.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
originalBitmap=rotateBitmap(originalBitmap);
imageView.setImageBitmap(originalBitmap);
}
});
由于图像的EXIF数据,图像旋转是一个问题。希望这个技巧适合你的需要。