600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 解决Android自定义相机预览和照片分辨率差异的问题

解决Android自定义相机预览和照片分辨率差异的问题

时间:2020-01-13 00:18:38

相关推荐

解决Android自定义相机预览和照片分辨率差异的问题

两种解决方式:1、找到和屏幕分辨率最匹配的PictureSize和PreviewSize(本文使用这种方式)

2、先取比屏幕分辨率大的PreviewSize和PictureSize最后生成图片的时候按屏幕分辨率裁剪(这种方式没试过,但是应该是适配率最高的)

/*** 从列表中选取合适的分辨率(选择最高清效果最好的比例)* 默认w:h = 16:9* <p>注意:这里的w对应屏幕的height* h对应屏幕的width<p/>*/private Camera.Size getProperBestSize(List<Camera.Size> pictureSizeList, float screenRatio) {List<Camera.Size> list = new ArrayList<>();for (int i = pictureSizeList.size() - 1; i >= 0; i--) {Camera.Size size = pictureSizeList.get(i);if(mScreenWidth == size.width && mScreenHeight == size.height){list.add(size);break;}float currentRatio = ((float) size.width) / size.height;if (currentRatio - screenRatio == 0) {list.add(size);}}if (list.size() == 0) {for (int i = pictureSizeList.size() - 1; i >= 0; i--) {Camera.Size size = pictureSizeList.get(i);if (equalRate(size,1.7777f)) {list.add(size);}}}return list.size()==0 ? pictureSizeList.get(0) : list.get(list.size() / 3);}/*** 从列表中选取合适的分辨率* 默认w:h = 4:3* <p>注意:这里的w对应屏幕的height* h对应屏幕的width<p/>*/private Camera.Size getProperSize(List<Camera.Size> pictureSizeList,Camera.Size picSize, float screenRatio) {Log.i(TAG, "screenRatio=" + screenRatio);Camera.Size result = pictureSizeList.get(0);List<Camera.Size> list = new ArrayList<>();for (Camera.Size size : pictureSizeList) {if(picSize.width == size.width && picSize.height == size.height){result = size;break;}float currentRatio = ((float) size.width) / size.height;if (currentRatio - screenRatio == 0) {list.add(size);}}if (list.size() == 0) {for (int i = pictureSizeList.size() - 1; i >= 0; i--) {Camera.Size size = pictureSizeList.get(i);if (equalRate(size,1.7777f)) {list.add(size);}}result = list.get(list.size() / 3);}return result;}private boolean equalRate(Camera.Size s, float rate){float r = (float)(s.width)/(float)(s.height);if(Math.abs(r - rate) <= 0.2){return true;}else{return false;}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。