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

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

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;
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值