如何在onActivityResult中了解相机意图后的照片分辨率

时间:2015-04-15 19:31:28

标签: java android android-intent android-camera

问候语

我已完成相机意图,传递文件参数以获取完整尺寸的图像,我也有一个功能来缩放图像并在UI中设置它。

但是,我想知道用户拍摄照片的分辨率。反正知道用户选择的分辨率吗?

我想知道这个原因导致我的应用程序在高质量分辨率的硬件设备中崩溃。任何高于2M像素的照片都会使旧手机崩溃。

我知道真正的解决方案是在整体应用程序中提高JAVA内存的性能。但这将是一个quickfix,我稍后会看到另一个。另外,1。用于照片的M像素就足够了。只是清单的一部分,不需要更好的质量。

无论如何都知道相机使用的分辨率吗?

感谢。

编辑: 谢谢大家的答案,但我不得不承认,我对这个解释不以为然。 我想简单地获得分辨率的另一个原因是该应用程序还将URI路径转换为内容路径,因此如果照片的质量太高,手机无法处理它,那么它就会崩溃。我只想警告用户,如果分辨率太高,那么我怎么能知道每个手机的每个适当的分辨率,而不是它我只是捕获错误“java.langOutOfMemory”,这将警告用户。像这样:

try {
 //here is my method to convert uri path to content
} catch (OutOfMemoryError outOfMemoryError) {
                            Toast toast = Toast.makeText(getApplicationContext(), "Please lower photo resolution", Toast.LENGTH_LONG);
                            toast.show();

                        }

1 个答案:

答案 0 :(得分:3)

您可以将结果转换为位图:

  Bitmap temp = BitmapFactory.decodeFile(data.getData().getPath());

那么你可以得到这样的分辨率:

  temp.getWidth();
  temp.getHeight();

或者你可以这样做:

  BitmapFactory.Options temp = new BitmapFactory.Options();
  temp.inJustDecodeBounds = true;
  BitmapFactory.decodeStream(context.getContentResolver().openInputStream(uri), null, temp);

  int width = temp.outWidth;
  int height = temp.outHeight;