自定义相机预览图片不变形

来源:互联网 发布:海南网络靶场 编辑:程序博客网 时间:2024/04/30 08:17

获取预览尺寸,使预览图片不变形

public Camera.Size getPreviewSize(List<Camera.Size> list, int th, float rate) {    Collections.sort(list, sizeComparator);    int i = 0;    for (Camera.Size s : list) {        if ((s.width > th) && equalRate(s, rate)) {            break;        }        i++;    }    if (i == list.size()) {        return getBestSize(list, rate);    } else {        return list.get(i);    }}
private boolean equalRate(Camera.Size s, float rate) {    float r = (float) (s.width) / (float) (s.height);    return Math.abs(r - rate) <= 0.2;}
private Camera.Size getBestSize(List<Camera.Size> list, float rate) {    float previewDisparity = 100;    int index = 0;    for (int i = 0; i < list.size(); i++) {        Camera.Size cur = list.get(i);        float prop = (float) cur.width / (float) cur.height;        if (Math.abs(rate - prop) < previewDisparity) {            previewDisparity = Math.abs(rate - prop);            index = i;        }    }    return list.get(index);

private CameraSizeComparator sizeComparator = new CameraSizeComparator();
private class CameraSizeComparator implements Comparator<Camera.Size> {    public int compare(Camera.Size lhs, Camera.Size rhs) {        if (lhs.width == rhs.width) {            return 0;        } else if (lhs.width > rhs.width) {            return 1;        } else {            return -1;        }    }}


原创粉丝点击