android - 在android中提供阴影相机视图的surfacechanged函数
问题描述
我正在使用 onPreviewFrame 和 surfacechanged 函数在相机上进行处理。但是相机视图非常阴影。我被困在这里。
是cameraview的位图处理。我已经尝试过改变框架大小和高度,宽度的参数。但没有用。
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i2, int i3) {// format,width,height
int i4;
Camera.Size size;
if (this.mCamera1 == null) {
this.mCamera1 = Camera.open();
try {
this.mCamera1.setPreviewCallback(this);
this.mCamera1.setPreviewDisplay(surfaceHolder);
} catch (IOException e2) {
this.mCamera1.release();
this.mCamera1 = null;
}
}
Camera.Parameters parameters = this.mCamera1.getParameters();
List supportedPreviewSizes = parameters.getSupportedPreviewSizes();
for (i4 = 0; i4 < supportedPreviewSizes.size(); i4++) {
size = (Camera.Size) supportedPreviewSizes.get(i4);
if (size.width == i2 && size.height == i3) {
break;
}
}
// size = (Camera.Size) supportedPreviewSizes.get(0); //
int i5 = i2 / i3;
int i6 = 0;
i4 = -1;
int i7 = 0;
while (i7 < supportedPreviewSizes.size()) {
int i8;
size = (Camera.Size) supportedPreviewSizes.get(i7);
if (size.width / size.height == i5) {
i8 = size.height * size.width;
if (i8 > i6) {
i6 = i8;
i8 = i7;
i7++;
i4 = i8;
}
}
i8 = i4;
i7++;
i4 = i8;
}
if (i4 >= 0) {
size = (Camera.Size) supportedPreviewSizes.get(i4);
} else {
i5 = -1;
i7 = 0;
while (i7 < supportedPreviewSizes.size()) {
size = (Camera.Size) supportedPreviewSizes.get(i7);
int i8 = i6 - (size.height * size.width);
if (Math.ceil((double) i8) < ((double) i5) || i5 == -1) {
i4 = i8;
i8 = i7;
} else {
i8 = i4;
i4 = i5;
}
i7++;
i5 = i4;
i4 = i8;
}
size = i4 > 0 ? (Camera.Size) supportedPreviewSizes.get(i4) : (Camera.Size) supportedPreviewSizes.get(0);
}
parameters.setPreviewSize(size.width, size.height);
size = parameters.getPreviewSize();
//Log.i(TAG, "surfaceChanged: " + sizes + "size" + size +"");
this.f803r = size.width;
this.f804s = size.height;
this.f789d = i2;
this.f790e = i3;
this.f795j = new int[(this.f804s * this.f803r)];
this.f796k = new int[(this.f804s * this.f803r)];
if (parameters.getSupportedFocusModes().contains("auto")) {
parameters.setFocusMode("auto");
}
parameters.setWhiteBalance("auto");
this.mCamera1.setParameters(parameters);
this.mCamera1.startPreview();
this.f802q = 2;
this.f792g = false;
}
期待清晰的相机视图在此处输入图像描述
解决方案
推荐阅读
- sql - 使用 SQL 计算特定日期格式的记录
- python - 为networkx中的不同节点组绘制不同的颜色
- bash - 将 Dockerfile 中的 bash 输出保存为 ENV var
- flutter - 如何在颤动中忽略肘部的状态?
- java - Spring Boot Hibernate Infinity 获取循环
- python - 在python中获取计算机屏幕上4个角的坐标
- java - WebCLient delete 方法不会删除数据,但会给出 200 Ok 代码,以及数据被删除的消息
- javascript - 使用相同的函数更改 onclick 事件的多个按钮文本
- foreach - 是否可以在“for each”迭代器的逻辑应用程序中添加项目?
- matlab - 在我的 MATLAB 代码中使用 contains() 对 If 语句输出感到困惑