我想更改预览中的某些像素比其他像素更暗。 假设我希望预览的上半部分比预览的下半部分更暗。
我试图像这样使用setPreviewCallback:
camera.setPreviewCallback(new PreviewCallback() {
// Called for each frame previewed
public void onPreviewFrame(byte[] data, Camera camera) {
Log.d(TAG, "onPreviewFrame called at: " + System.currentTimeMillis());
for (int i = 0; i < data.length; i++){
if(i < data.length/2)
data[i] = manipulate(data[i]);
}
Preview.this.invalidate();
}
});
但它没有用,因为我做错了什么。我怎样才能使它发挥作用?
由于 的Eyal
答案 0 :(得分:1)
不可能像这样操纵预览,因为你只能将缓冲区的副本放到onPreviewFrame中。
最简单的方法是覆盖另一个视图,该视图使用透明画布使其部分变暗。如果您需要检查传入图像以生成叠加层,叠加视图可以实现Camera.PreviewCallback。
在您的活动中:
setContentView(yourPreviewSurfaceView);
addContentView(yourOverlayView, ...);