多种方法获取相机最佳尺寸
2018-01-13 14:53
375 查看
方法一:
调用:
获取到的尺寸虽然不怎么变形,但很模糊。
方法二:
放在宽度为1000,高度为740的surfaceView里,会变形。
/** * 通过对比得到与宽高比最接近的尺寸(如果有相同尺寸,优先选择) * * @param surfaceWidth * 需要被进行对比的原宽 * @param surfaceHeight * 需要被进行对比的原高 * @param preSizeList * 需要对比的预览尺寸列表 * @return 得到与原宽高比例最接近的尺寸 */ protected Camera.Size getCloselyPreSize(int surfaceWidth, int surfaceHeight, List<Camera.Size> preSizeList) { int ReqTmpWidth; int ReqTmpHeight; // 当屏幕为垂直的时候需要把宽高值进行调换,保证宽大于高 // if (mIsPortrait) { // ReqTmpWidth = surfaceHeight; // ReqTmpHeight = surfaceWidth; // } else { ReqTmpWidth = surfaceWidth; ReqTmpHeight = surfaceHeight; // } //先查找preview中是否存在与surfaceview相同宽高的尺寸 for(Camera.Size size : preSizeList){ if((size.width == ReqTmpWidth) && (size.height == ReqTmpHeight)){ return size; } } // 得到与传入的宽高比最接近的size float reqRatio = ((float) ReqTmpWidth) / ReqTmpHeight; float curRatio, deltaRatio; float deltaRatioMin = Float.MAX_VALUE; Camera.Size retSize = null; for (Camera.Size size : preSizeList) { curRatio = ((float) size.width) / size.height; deltaRatio = Math.abs(reqRatio - curRatio); if (deltaRatio < deltaRatioMin) { deltaRatioMin = deltaRatio; retSize = size; } } return retSize; }
调用:
List<Camera.Size> mSupportedPreviewSizes = mCamera.getParameters().getSupportedPictureSizes(); Camera.Size bestSize = getCloselyPreSize(1000,740,mSupportedPreviewSizes); mWidth = bestSize.width; mHeight = bestSize.height;
获取到的尺寸虽然不怎么变形,但很模糊。
方法二:
private int getPictureSize(List<Camera.Size> sizes) { // 屏幕的宽度 int screenWidth = getResources().getDisplayMetrics().widthPixels; LogUtil.d(TAG, "screenWidth=" + screenWidth); int index = -1; for (int i = 0; i < sizes.size(); i++) { if (screenWidth == sizes.get(i).width) { index = i; } } // 当未找到与手机分辨率相等的数值,取列表中间的分辨率 if (index == -1) { index = sizes.size() / 2; } return index; }
放在宽度为1000,高度为740的surfaceView里,会变形。
相关文章推荐
- jquery获取input值的多种方法
- android调用系统相机拍摄获取照片的两种方法
- 用JavaScript获取DOM元素位置和尺寸大小的方法
- C/C++多种方法获取文件大小
- WebApp最佳实践用户体验篇之如何针对多种屏幕尺寸设计合理的移动应用
- android中获取context的多种方法的区别(this,getbascontext(),getApplicationcontext())
- Android 调用系统相机拍摄获取照片的两种方法实现实例
- js闭包的定义与应用+获取元素下标的多种方法
- win8相机用不了打不开 win8相机权限获取方法
- UI原点尺寸获取的简化方法
- 讨论已久的获取显示器物理尺寸的方法
- 多种方法获取ExecutingPath及其特点
- 获取设备的屏幕尺寸与密度的方法
- PHP获取文件扩展名的多种方法
- .NET获取枚举DescriptionAttribute描述信息性能改进的多种方法
- Javascript 获取字符串字节数的多种方法
- jQuery获取多种input值的简单实现方法
- javascript加载图片获取图片尺寸信息方法
- JavaScript简单获取页面图片原始尺寸的方法