我现在已经实现了`ExifInterface,但它似乎没有旋转相机意图所拍摄的任何图像。图像仍然以横向而不是纵向返回。
这是我的代码:
Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File imagesFolder = new File(Environment.getExternalStorageDirectory(), "My Fodler");
imagesFolder.mkdirs();
File image = new File(imagesFolder, "My_" + timeStamp + ".jpg");
fileUri = Uri.fromFile(image);
ExifInterface exif = null;
try {
exif = new ExifInterface(image.getAbsolutePath());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int orientation = exif.getAttributeInt(
ExifInterface.TAG_ORIENTATION,
ExifInterface.ORIENTATION_NORMAL);
switch (orientation) {
case ExifInterface.ORIENTATION_ROTATE_270:
rotate = 270;
break;
case ExifInterface.ORIENTATION_ROTATE_180:
rotate = 180;
break;
case ExifInterface.ORIENTATION_ROTATE_90:
rotate = 90;
break;
}
imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
startActivityForResult(imageIntent, TAKE_PICTURE);
}
我在这里做错了什么? 请帮帮忙?
答案 0 :(得分:0)
首先,您正在使用ExifInterface
来检查尚不存在的文件。等到相机应用拍摄照片,因此该文件存在,然后使用ExifInterface
。
其次,您正在阅读EXIF标题并设置rotate
...然后对rotate
值无效。按照their previous SO question的最新投票答案中的说明操作,并使用Matrix
实际旋转图片。请注意,您可能没有足够的堆空间来旋转完整的摄像机图像,因为它们很大 - 如果可能的话,请旋转下采样图像。