问题
In my camera app, you can switch between the front and back camera. When I take picture with the back camera the picture is the same like the preview shows. But when I switch to the front camera, the picture is mirrorrd.I think it has something to do that front and back camera is in landscape mode. I have tried almost every given answers on SO.
It would really help if someone could point me in the right directions.
回答1:
I found the answer , doing mCamera.setDisplayOrientationa(int degrees);
did not help. I had to mirror the generated bitmap in order to get the result I wanted. I used the Matrix method to a achieve this .
float[] mirrorY = { -1, 0, 0, 0, 1, 0, 0, 0, 1};
Matrix matrix = new Matrix();
Matrix matrixMirrorY = new Matrix();
matrixMirrorY.setValues(mirrorY);
matrix.postConcat(matrixMirrorY);
image = Bitmap.createBitmap(mBitmap, 0, 0, frame.getWidth(), frame.getHeight(), matrix, true)
回答2:
The issue with front camera was figured out to be specific to android 4.0+. So after you decoded the byte-array in method "onPictureTaken"
@Override
public void onPictureTaken(byte[] data, Camera camera) {
Bitmap photo = BitmapFactory.decodeByteArray(data,0,data.length);
photo = rotateBitmap(photo); //.....do some stuff }
just call rotateBitmap to rotate the bitmap
private Bitmap rotateBitmap(Bitmap bitmap){
Matrix rotateRight = new Matrix();
rotateRight.preRotate(90);
if(android.os.Build.VERSION.SDK_INT > 13 && CameraActivity.frontCamera)
{
float[] mirrorY = { -1, 0, 0, 0, 1, 0, 0, 0, 1};
rotateRight = new Matrix();
Matrix matrixMirrorY = new Matrix();
matrixMirrorY.setValues(mirrorY);
rotateRight.postConcat(matrixMirrorY);
rotateRight.preRotate(270);
}
final Bitmap rImg= Bitmap.createBitmap(bitmap, 0, 0,
bitmap.getWidth(), bitmap.getHeight(), rotateRight, true);
return rImg;
}
回答3:
I think you are looking for setDisplayOrientation(int). There is a function they have that might help on the dev site:
http://developer.android.com/reference/android/hardware/Camera.html#setDisplayOrientation%28int%29
来源:https://stackoverflow.com/questions/8332312/android-front-and-back-camera-orientation-landscape