如何获取设备支持的最大图片尺寸?

3

我希望使用SurfaceViewPictureCallBack拍摄照片,并获得最高支持的分辨率。

以下是在我的Galaxy Nexus上可行的配置:

    Camera.Parameters params = camera.getParameters();
    List<Camera.Size> sizes = params.getSupportedPictureSizes();
    Toast.makeText(MainActivity.this,"Supported Sizes: " + sizes,Toast.LENGTH_LONG).show();

    params.setPictureSize(2592, 1944);
    params.setJpegQuality(100);

    camera.setParameters(params);

2592 x 1944是我设备的最佳分辨率,但我如何从var sizes中获取任何设备的最高分辨率?

感谢您的帮助!


你可以尝试对支持的图片尺寸进行排序,具体排序标准由你自己决定。例如,你可以先按照宽度排序,再按照高度排序;或者你可以将宽度和高度相乘(这样可以得到像素总数/“最高分辨率”),然后以此为依据进行排序。在这两种情况下,最简单的方法是使用自己编写的Comparator<Camera.Size>来调用Collections.sort(...)函数。 - MH.
1个回答

4
循环遍历您的列表,将高度和宽度相乘以获得像素计数,并保留最大索引的变量。
int max = 0;
int index = 0;

for (int i = 0; i < List.size(); i++){
     Size s = List.get(i);
     int size = s.height * s.width;
     if (size > max) {
         index = i;
         max = size;
     }
}
params.setPictureSize(List.get(index).width, List.get(index).height);

2
这个代码运行良好,但是我从widthheight中去掉了(),例如:params.setPictureSize(List.get(index).width, List.get(index).height); - Bruno Almeida

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接