当前位置:  开发笔记 > 编程语言 > 正文

如何获得像Instagram一样的1:1比例的Android Camera2?

如何解决《如何获得像Instagram一样的1:1比例的AndroidCamera2?》经验,为你挑选了1个好方法。

我的问题很简单:

如何以android.hardware.Camera21:1的比例获得Android 而不像Instagram那样变形?

我测试了GoogeSamples项目android-Camera2Basic.但是当我以1:1的比例更改预览时,图像会变形.有没有人对此有所了解?

在此输入图像描述



1> lopez.mikhae..:

谢谢@CommonsWare。

我按照您的建议使用了负边距(顶部和底部),并且效果很好。

为此,我只需要通过以下方式更新AutoFitTextureView GoogeSamples项目android-Camera2Basic:

public class AutoFitTextureView extends TextureView {

    //...
    private boolean mWithMargin = false;

    //...

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, widthMeasureSpec);
        int width = MeasureSpec.getSize(widthMeasureSpec);
        int height = MeasureSpec.getSize(heightMeasureSpec);
        int margin = (height - width) / 2;

        if(!mWithMargin) {
            mWithMargin = true;
            ViewGroup.MarginLayoutParams margins = ViewGroup.MarginLayoutParams.class.cast(getLayoutParams());
            margins.topMargin = -margin;
            margins.bottomMargin = -margin;
            margins.leftMargin = 0;
            margins.rightMargin = 0;
            setLayoutParams(margins);
        }

        if (0 == mRatioWidth || 0 == mRatioHeight) {
            setMeasuredDimension(width, height);
        } else {
            if (width < height) {
                setMeasuredDimension(width, width * mRatioHeight / mRatioWidth);
            } else {
                setMeasuredDimension(height * mRatioWidth / mRatioHeight, height);
            }
        }
    }
}


嗨!我也有同样的问题。我添加了您的AutoFitTextureView的实现,但是仍然无法正常工作。您能否提供更多应用代码,以便以方形方式预览相机和拍摄图片?谢谢!
推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有