在显示在surfaceTexture中之前尝试更改像素。
在frameavailablelistener上签名的surfaceTexture:
@Override
public void onFrameAvailable(SurfaceTexture surfaceTexture)
{
...
}
我在这种方法中理解并想更改像素,但是如何?非常感谢您的任何答案和评论!
您如何从surfaceTexture中绘制输出?您是在使用TextureView类,还是使用实际的GLSURFACEVIEW或类似的GLSURFACEVIEW或一组OpenGL ES绘图调用来绘制预览?
如果您使用的是TextureView,那么您无能为力 - 它可以照顾图纸,而您无法将自己注入中间。
使用GlSurfaceView,您基本上是编写自己的OpenGL程序,可以通过片段着色器等进行各种图像处理。但是您需要为此学习OpenGL编程的基础知识,或者至少找到设置所有样板的样本。
如果您使用的是Camera2,也可以考虑使用RenderScript进行处理。官方的Google示例应用程序HDRViewFinder使用RS在预览上进行实时处理。