【发布时间】: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();
}
【问题讨论】:
-
使用
BitmapFactory检查图像,使用inJustDecodeBoundsto only get you the size and bit depth info。 -
您停止崩溃,您应该应用采样大小因子
-
是的,但是如果我重新缩放图像,我还必须创建另一个文件以从 uri 路径转换为内容路径?
标签: java android android-intent android-camera