我想使用camera2 API在Android中裁剪相机预览。我正在使用android-Camera2Basic官方示例。
我不想将对象覆盖在TextureView上。我希望它实际上具有这种尺寸而不会拉伸。
答案 0 :(得分:1)
绘制图像之前,您需要自己编辑图像,因为TextureView的默认行为是仅绘制发送到其Surface的整个图像。 调整TextureView的变换矩阵只会缩放或移动整个图像,而不会对其进行裁剪。
这样做需要很多样板,因为您需要重新实现大部分TextureView。为了获得最佳效率,您可能希望在OpenGL ES中实现裁剪;因此需要一个GLSurfaceView,然后使用该GLSurfaceView的OpenGL上下文创建一个SurfaceTexture对象,然后使用该纹理在片段着色器中绘制具有所需裁剪行为的四边形。
那是相当基本的EGL,但是如果您以前从未做过任何OpenGL编程,那也就足够了。 Android操作系统树中有一个小型测试程序,它使用以下路径:https://android.git.corp.google.com/platform/frameworks/native/+/master/opengl/tests/gl2_cameraeye/