java - Android 如何只为半屏应用相机效果?

标签 java android

我在 Android 中使用 Camera2 API 制作了一个相机应用程序,一个不拍照的全屏相机,我将它应用于所有预览,我想要做的是只将负面效果应用于预览的一半,示例:

Image Example

这是我的代码: Link to my code on github

我会很感激你的帮助,因为我迷路了,我不知道该怎么做:(

最佳答案

不幸的是,您必须在此处进行自定义渲染,因为 camera2 或 cameraX API 中的任何内容都不会为您执行此操作。

基本上,您需要将相机输出发送到 GPU,并使用 GL 着色器代码编写您自己的自定义负面效果。

有很多样板文件可以到达您想要的位置,但您不太可能有任何其他现实的选择。虽然 ImageView 和其他一些 Android UI API 允许对它们的输出应用一些效果或颜色变换,但我不认为你可以让它们给你一半的负面 View ,而不会有明显的性能问题。

要将相机图像数据发送到 GPU,请使用 SurfaceTexture 作为输出目标,然后在您的 EGL 代码中使用 SurfaceTexture 的纹理 ID 作为源纹理。

关于java - Android 如何只为半屏应用相机效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60728633/

相关文章:

java - 是否可以子类化 ant 任务?

java - 将 Guava 表值写入java中的文件中

java - 当我转换包含变量的对象时,为什么它不显示变量的值?

Android 计时器似乎忽略了 .cancel

android - 无法使用我自己的 Android 启动器接听 Skype 来电

java - 错误 : incompatible types: android. content.Context 无法转换为 com.google.firebase.database.core.Context

android - onCreateOptionsMenu() 没有在 FragmentActivity 上被调用

android - 如何在 Google Drive Android 中备份房间数据库?

java - 对象框重复文件异常

java - ebay ordersAPI - API 请求中的身份验证 token 验证失败