Skip to content

解决相机拉伸变形问题 #270

@zhangwanggit

Description

@zhangwanggit

使用中发现扫描的二维码被拉伸了,本来是正方形的,拉伸成长方形的,虽然不影响使用,但是显示效果不好,排查代码,发现是CameraConfigurationManager下findBestPreviewSizeValue方法出现问题,该方法目的是找到最合适的预览尺寸,修改后的代码如下

private static Point findBestPreviewSizeValue(CharSequence previewSizeValueString, Point screenResolution) {
int bestX = 0;
int bestY = 0;
float diff = Integer.MAX_VALUE;
for (String previewSize : COMMA_PATTERN.split(previewSizeValueString)) {

        previewSize = previewSize.trim();
        int dimPosition = previewSize.indexOf('x');
        if (dimPosition < 0) {
            Log.w(TAG, "Bad preview-size: " + previewSize);
            continue;
        }

        int newX;
        int newY;
        try {
            newX = Integer.parseInt(previewSize.substring(0, dimPosition));
            newY = Integer.parseInt(previewSize.substring(dimPosition + 1));
        } catch (NumberFormatException nfe) {
            Log.w(TAG, "Bad preview-size: " + previewSize);
            continue;
        }

        //int newDiff = Math.abs(newX - screenResolution.x) + Math.abs(newY - screenResolution.y);
        float newDiff = Math.abs((float) newX/newY-(float)screenResolution.x/screenResolution.y);
        if (newDiff == 0) {
            bestX = newX;
            bestY = newY;
            break;
        } else if (newDiff < diff) {
            bestX = newX;
            bestY = newY;
            diff = newDiff;
        }

    }

    if (bestX > 0 && bestY > 0) {
        return new Point(bestX, bestY);
    }
    return null;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions