我正在構建一個使用攝像頭功能的android應用程序。我遇到的問題是我從前置攝像頭獲得的圖像數據(字節[])在我的三星s7和nexus手機上倒過來。它在預覽中看起來是正確的,但是在將數據保存爲原樣然後在圖庫中顯示圖像之後,它們都是顛倒的。我知道我可以在保存前翻轉圖像數據,但我已經在運行4.4(kitkat)的藍光C 5.0 HD上測試了該代碼,並且該手機上的圖像數據以正確的方式進行了定向。所以alwyas翻轉圖像會導致其他設備上的錯誤。我被告知這個問題是因爲當建立新的三星和nexus手機時,前置攝像頭被顛倒過來以節省空間。我不確定這是否正確,但如果是這樣,如果我翻轉所有圖像,它將弄亂具有正確相機方向的手機。那麼有沒有辦法在保存圖像之前檢測圖像數據的方向?Android前置攝像頭圖像被倒置保存
這裏是我使用的代碼:
mCamera.takePicture(null, null, mPicture);
回調:
private final Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
processCameraCallback(data);
}
};
處理數據:
public void processCameraCallback(byte[] data) {
confirmPhoto(true);
//Make a new empty picture file
try {
pictureFile = Utils.createImageFile();
} catch (IOException ex) {
// Error occurred while creating the File
Log.e(TAG, "Failed to create photo file: " + ex.toString());
confirmPhoto(false);
return;
}
//Write the file to the storage
try {
FileOutputStream fos;
if (pictureFile != null) {
fos = new FileOutputStream(pictureFile);
fos.write(data);
fos.close();
}
} catch (FileNotFoundException e) {
Log.d(TAG, "File not found: " + e.getMessage());
confirmPhoto(false);
return;
} catch (IOException e) {
Log.d(TAG, "Error accessing file: " + e.getMessage());
confirmPhoto(false);
return;
}
}
你有沒有想過這個?我使用本機相機應用程序遇到了與S7相同的問題,並補償了EXIF數據中返回的方向。 –