我正在尝试找到设备的REAL Camera max Megapixels,我测试了stackoverflow上的一些代码和google cam.getParameters().getSupportedPictureSizes();
,但代码在所有设备上都不能正常工作。
例如在NEXUS 5上它工作正常并且告诉该设备具有8Mpx,但是在具有KitKat 4.4.2的BQ Aquaris E5 FHD中它不能很好地工作并且告诉该设备具有19 Mpx(它具有13 Mpx .. 。)
Bq Aquaris的问题是代码获得所有支持的图片尺寸,最大的值是5888x3312,这个值意味着19.5 mpx,但实际上这个设备不支持19.5 mpx,所以我不明白为什么5888x3312是由getSupportedPictureSizes()
回复,我不知道我必须如何忽略像这个值那样的非实际值。
这是无法正常运行的代码:
DecimalFormat localDecimalFormat = new DecimalFormat("#.#", symbols);
String sizeInMegapixel=getString(R.string.not_available);
if(cam!=null){
Camera.Parameters camParams=cam.getParameters();
List<Size> list = cam.getParameters().getSupportedPictureSizes();
Camera.Size size;
Size maxSize=list.get(0);
int aux;
int maxAux=0;
for (int i=0;i<list.size();i++){
size=list.get(i);
aux = size.width*size.height;
if (aux>maxAux){
maxAux=aux;
maxSize=size;
}
}
sizeInMegapixel=localDecimalFormat.format((maxSize.width*maxSize.height)/1000000.0D);
}
答案 0 :(得分:1)
所以我不明白为什么5888x3312是由getSupportedPictureSizes()
回归
因为制造商认为这是支持的最大图片尺寸。尝试拍摄那么大的照片 - 如果失败了,那么这个设备就有一个错误。如果成功,那么你可能对相机分辨率有误。
我不知道我必须如何忽略像这个值那样的非实际值
除了通过测试之外,你不会这样做。设备制造商始终从getSupportedPictureSizes()
返回好奇值。
答案 1 :(得分:1)
Camera camera = Camera.open();
Parameters paramOfCamera = camera.getParameters();
android.hardware.Camera.Size sizeOfImage = paramOfCamera.getPictureSize();
int width = sizeOfImage .width ;
int height = sizeOfImage .height ;
double pixelOfCamera = (width*height)/1024000 ;
<强>更新强>
List<Size> sizes = paramOfCamera .getSupportedPictureSizes();
Size mSize = null;
for (Size size : sizes) {
System.out.println("Size =="+size.width+"==Height=="+size.height);
break;
}
您将获得所有支持的尺寸,但第一个索引将提供最大图片尺寸。
答案 2 :(得分:0)
如果您有相机对象,请尝试
android.hardware.Camera.Parameters parameters = camera.getParameters();
android.hardware.Camera.Size size = parameters.getPictureSize();
int height = size.height;
int width = size.width;
随着相机中拾音设备的百万像素增加,您可以制作的最大尺寸图像也会增加。这意味着500万像素的摄像头能够拍摄比300万像素摄像头更大的图像。
示例:1936 x 1552/1024000 = 3百万像素