在我的相机应用程序中,您可以在正面和背面相机之间切换。 当我用后置照相机拍照时,照片与预览显示一样。 但是,当我切换到前置摄像头时,图片是mirrorrd.I认为它有一些事情要做,前置摄像头和后置摄像头处于横向模式。 我已经尝试了几乎所有给出的答案。Android,正面和背面相机定位,横向
如果有人能指引我走向正确的方向,那真的会有帮助。
在我的相机应用程序中,您可以在正面和背面相机之间切换。 当我用后置照相机拍照时,照片与预览显示一样。 但是,当我切换到前置摄像头时,图片是mirrorrd.I认为它有一些事情要做,前置摄像头和后置摄像头处于横向模式。 我已经尝试了几乎所有给出的答案。Android,正面和背面相机定位,横向
如果有人能指引我走向正确的方向,那真的会有帮助。
我找到了答案,做mCamera.setDisplayOrientationa(int degrees);
没有帮助。我不得不镜像生成的位图,以获得我想要的结果。我使用矩阵方法来实现这一点。
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)
我认为你正在寻找setDisplayOrientation(int)。还有就是他们有可能在开发站点帮助功能:
http://developer.android.com/reference/android/hardware/Camera.html#setDisplayOrientation%28int%29
前置摄像头的问题被认为是特定于android 4.0+。 你解码方法的字节数组所以经过“onPictureTaken”
@Override
public void onPictureTaken(byte[] data, Camera camera) {
Bitmap photo = BitmapFactory.decodeByteArray(data,0,data.length);
photo = rotateBitmap(photo); //.....do some stuff }
只是叫rotateBitmap将旋转位图
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;
}
你的答案与已经接受的答案有什么不同? –
这对初学者来说更具可读性和可理解性。这就是为什么我添加了这个完整的答案。在上面的答案中没有明确说明在哪里做这件事。除了上面的答案是缺少方法“preRotate()”。 –
酷,感谢您张贴的答案。 – craniumonempty
没问题;),很高兴我能帮到 –
@MaikelBollemeijer真的很有帮助。感谢 –