Android相机 - 如何在预览中更改像素?

时间:2012-03-11 12:50:43

标签: android camera preview

我想更改预览中的某些像素比其他像素更暗。 假设我希望预览的上半部分比预览的下半部分更暗。

我试图像这样使用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

1 个答案:

答案 0 :(得分:1)

不可能像这样操纵预览,因为你只能将缓冲区的副本放到onPreviewFrame中。

最简单的方法是覆盖另一个视图,该视图使用透明画布使其部分变暗。如果您需要检查传入图像以生成叠加层,叠加视图可以实现Camera.PreviewCallback。

在您的活动中:

setContentView(yourPreviewSurfaceView);
addContentView(yourOverlayView, ...);