相机能够输出的最高分辨率受用户权限的限制,免费版最高是标清(960),而专业版的客户可以原图输出。
详情参见 产品服务
用户可以使用 setOutputSize(TuSdkSize size)
方法指定相机输出图片的分辨率,但是该方法的参数不是由用户随便指定的,而是需要先得到相机所支持的分辨率列表,然后从中挑选出一个来。
下面以获取相机所支持的最大分辨率为例解释如何获取该方法的参数。
需要先使用getSupportedPictureSizes()
方法获得相机所支持的所有的图片尺寸,然后再使用TuSdkGPU.getGpuType().getSize()
获得该设备 GPU 所支持的最大材质尺寸gpuSize
,最后在图片所支持的尺寸列表中选出不大于gpuSize
的那个,如下所示:
/**
* 获取支持的最高的分辨率
* @return
*/
public Size getMaxOutputSize()
{
// 获取相机所支持的所有的尺寸
Camera camera = Camera.open();
List<Size> list = camera.getParameters().getSupportedPictureSizes();
// 降序排列长宽列表
list = CameraHelper.sortSizeList(list);
// 获得GPU所支持的最大材质尺寸
int gpuSize = TuSdkGPU.getGpuType().getSize();
// 如果找不到合适的尺寸就返回GPU所支持的最大尺寸
Size resultSize = camera.new Size(gpuSize, gpuSize);
for (Size size : list)
{
if (size.width < gpuSize && size.height < gpuSize)
{
resultSize = size;
break;
}
}
// 最后不要忘记关闭相机
camera.release();
camera = null;
return resultSize;
}
使用 getMaxOutputSize()
方法获得最佳的结果之后既可以使用 setOutputSize(TuSdkSize size)
方法设置了,如下:
Size size = getMaxOutputSize();
TuCameraOption option = new TuCameraOption();
// 照片输出图片长宽 (默认:全屏)
option.setOutputSize(new TuSdkSize(size.width, size.height));
这样即可输出相机所支持的最高分辨率的图片。
如果用户想要设置其他低于最高分辨率尺寸的图片输出,可以从getSupportedPictureSizes()
方法获取到的数值中取出一组然后作为setOutputSize(TuSdkSize size)
方法的参数即可。
©2019-2024 TUTUCLOUD. All Rights Reserved. 杭州元凡视觉智能科技有限公司 | 浙ICP备14040447号-1 | 浙公网安备33010602001649号