Я использую onPreviewFrame и функции поверхности для обработки на камере.Но вид с камеры очень затененный.Я застрял здесь.
Это растровая обработка изображения с камеры.Я пробовал это с изменением параметров размера и высоты, а также ширины.но бесполезно.
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;
}
ожидается четкое изображение с камеры введите описание изображения здесь