在我的相機應用程序中,您可以在正面和背面相機之間切換。 當我用後置照相機拍照時,照片與預覽顯示一樣。 但是,當我切換到前置攝像頭時,圖片是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真的很有幫助。感謝 –