我正在编写一款依赖用户定期拍照的Android应用。据记载,如果从前置摄像头拍摄照片,Android将返回翻转和旋转90度的图像。当这种情况发生时,我能够成功地重新调整图像的方向。问题是我不知道如何在使用前置摄像头时告诉。通过了解在拍照时使用前置摄像头的时间,我可以确定是否应该重新定位它。
有没有办法确定,最好在onActivityResult()中使用哪个相机?是否有其他练习用于帮助确定和修复图片方向?
这是我的相机活动启动代码。非常直截了当:
private void startCameraIntent(String name) {
try {
String fileName = MontageConstants.APP_DATA_FOLDER + "/" + name + "/" + new Date().getTime() + ".jpg";
Uri fileUri = Uri.fromFile(new File(fileName));
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
startActivityForResult(takePictureIntent, TAKE_PIC_ACTIVITY_REQUEST_CODE);
} catch (Exception ex) {
Toast.makeText(this, "Couldn't take picture", Toast.LENGTH_LONG).show();
}
}
谢谢!
答案 0 :(得分:1)
感谢Navjot Singh - 我在他发布的答案中找到了我需要的信息:How to rotate android device camera preview(libgdx)。实际上,您可以使用ExifInterface类在存储的JPEG文件中读取Exif标记。由于我在操作之前将图片存储到文件中,因此我只需插入文件路径,获取方向,然后相应地旋转/调整。
ExifInterface ei = new ExifInterface(fileName);
orientation = ei.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);