ExifInterface不旋转图像

时间:2014-12-18 11:00:13

标签: android

我现在已经实现了`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);
}

我在这里做错了什么? 请帮帮忙?

1 个答案:

答案 0 :(得分:0)

首先,您正在使用ExifInterface来检查尚不存在的文件。等到相机应用拍摄照片,因此该文件存在,然后使用ExifInterface

其次,您正在阅读EXIF标题并设置rotate ...然后对rotate值无效。按照their previous SO question的最新投票答案中的说明操作,并使用Matrix实际旋转图片。请注意,您可能没有足够的堆空间来旋转完整的摄像机图像,因为它们很大 - 如果可能的话,请旋转下采样图像。