gpt4 book ai didi

java - 带有滤色器的 Android 相机预览

转载 作者:太空宇宙 更新时间:2023-11-03 11:08:36 25 4
gpt4 key购买 nike

<分区>

我有一个 CameraPreview 类。它扩展了 SurfaceView 并实现了 SurfaceHolder.CallbackPreviewCallback。我想更改相机发送到 SurfaceView 的图像。它应该在代码的以下部分完成:

@Override
public void onPreviewFrame(byte[] data, Camera camera) {
Log.d(TAG, "onPreviewFrame");
Canvas canvas = mHolder.lockCanvas();
synchronized (mHolder) {
Paint p = new Paint();
p.setColor(Color.RED);
canvas.drawRect(0, 0, 100, 200, p);
mHolder.unlockCanvasAndPost(canvas);
}
}

但我得到以下异常:

异常锁定表面
java.lang.IllegalArgumentException异常
在 android.view.Surface.nativeLockCanvas( native 方法)
在 android.view.Surface.lockCanvas(Surface.java:243)

谷歌说错误发生是因为 Canvas 未锁定,但我总是保持锁定状态。如何在 SurfaceView 上绘制图像?

我创建了一个对现有图像应用滤色器的函数,我希望这段代码是正确的。

@Override
protected void overDraw(Canvas canvas) {
Paint p = new Paint();
ColorMatrixColorFilter fl = new ColorMatrixColorFilter(new ColorMatrix(filter));
p.setColorFilter(fl);
canvas.drawPaint(p);
Log.d(TAG, "overDraw");
}

float[] filter = new float[]
{
//r, g, b, a, k
0.33,0.33,0.33,0,0, //r
0.33,0.33,0.33,0,0, //g
0.33,0.33,0.33,0,0, //b
0,0,0,1,0, //a
};

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