gpt4 book ai didi

android - 为什么纹理 View 中的相机预览比表面 View 中的相机预览模糊得多?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:51:03 26 4
gpt4 key购买 nike

我发现当使用 textureview 而不是 surfaceview 作为相机预览时(两者都通过 mediarecorder 连接到相机)然后预览会更加模糊。

我所说的模糊是指在纹理 View 中您可以看到像素,尤其是在缩放时。使用表面 View 时情况并非如此。为什么会这样?

最佳答案

更新:不好意思,我重写了我的狗屎代码,关键是预览尺寸太小导致“模糊”,所以你应该设置一个合理的预览尺寸,而不是下面删除的原因,但建议自动对焦......

Size size = getBestSupportSize(parameters.getSupportedPreviewSizes(), width, height);
parameters.setPreviewSize(size.width, size.height);

关于方法getBestSupportSize(),如何获取项目需要的bestSize,在本例中,它与屏幕宽度一样大,并且ratio 是 4/3 你的可能是其他的,我计算除以 width/height 的比例。

 private Size getBestSupportSize(List<Size> sizes, int width, int height) {
Size bestsize = sizes.get(0);
int screenWidth = getResources().getDisplayMetrics().widthPixels;
int dt = Integer.MAX_VALUE;
for (int i = sizes.size() - 1; i >= 0; i--) {
Log.d(TAG, "-index : " + i);
Size s = sizes.get(i);
if (s.width * 3.0f / 4 == s.height) {
int newDT = Math.abs(screenWidth - s.width);
if (newDT < dt && screenWidth < s.width) {
dt = newDT;
bestsize = s;
}
}
}
return bestsize;//note that if no "4/3" size supported,default return size[0]
}

所以这种“模糊”是由小的 previewSize 引起的,使用此 getSupportedPreviewSizes() 方法计算相机的最佳尺寸


我会保留下面的 autoFocus 代码段,但删除线,如果需要的话 FYR。


好吧,我得到了这个“模糊”问题的解决方案,我的案例只是使用 TextureViewsurfaceTexture 来拍照而不是旧的 surfaceViewsurfaceHolder方式。

关键是设置这个mCamera.autofocus(),为什么图片“模糊”是因为我们缺少这个autoFocus设置。如下所示:

mCamera.setPreviewTexture(surface);

//enable autoFocus if moving
mCamera.setAutoFocusMoveCallback(new AutoFocusMoveCallback() {

@Override
public void onAutoFocusMoving(boolean start, Camera camera) {

if (start) { //true means you are moving the camera

mCamera.autoFocus(myAutoFocus);

}
}
});
mCamera.startPreview();

autoFocusCallback 像这样:

AutoFocusCallback myAutoFocus = new AutoFocusCallback() {

@Override
public void onAutoFocus(boolean success, Camera camera) {

}
};

关于android - 为什么纹理 View 中的相机预览比表面 View 中的相机预览模糊得多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21868581/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com