【问题标题】:How to know photo resolution after camera intent in onActivityResult如何在 onActivityResult 中了解相机意图后的照片分辨率
【发布时间】:2015-04-15 19:31:27
【问题描述】:

问候

我已经做了一个相机意图,传递文件参数来获取完整大小的图像,我还有一个缩放图像并在 UI 中设置的功能。

但是,我想知道用户拍摄照片的分辨率。有什么办法知道用户选择的分辨率吗?

我想知道这是因为我的应用程序在质量不佳的硬件设备中崩溃,并且分辨率很高。任何超过 200 万像素的照片都会使旧手机崩溃。

我知道真正的解决方案是在整体应用程序中提高 JAVA 内存的性能。但这将是一个快速修复,我稍后会看到另一个。此外,1.something 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();

                        }

【问题讨论】:

标签: java android android-intent android-camera


【解决方案1】:

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

  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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-18
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多