0

我在 Android 上使用相机。SurfaceHolder 用于显示预览屏幕。我需要在 SurfaceView 上看到精确的逐像素图片。我怎么做 ?

我尝试获取 Surface 视图的尺寸时

public void surfaceChanged(SurfaceHolder holder,
            int format, int width,
            int height) {}

被调用,然后使用这些测量值将拍摄的图片从

public void onPictureTaken( byte[] data, Camera camera ) { }

这有效,但仅在某些设备上有效。其他设备会扭曲图像。

4

1 回答 1

0

简单的:

创建一个 byte[] 缓冲区;

camera.addCallbackBuffer(buffer); 

您还想设置缓冲区的大小:

int height = camera.getParameters().getPreviewSize().height;
int width = camera.getParameters().getPreviewSize().width;
int bitsPerPixel = ImageFormat.getBitsPerPixel(camera.getParameters().getPreviewFormat());

buffer = new byte[width * height * bitsPerPixel];
于 2013-11-13T04:15:49.590 回答