如何在使用相机时在表面视图上看到精确的逐像素图片

时间:2013-11-13 03:59:03

标签: android camera surfaceview

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

我尝试在

时获取Surface视图的尺寸
public void surfaceChanged(SurfaceHolder holder,
            int format, int width,
            int height) {}

被调用,然后使用这些测量来转换拍摄的照片

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

这样可行,但仅适用于某些设备。其他设备扭曲了图片。

1 个答案:

答案 0 :(得分:0)

EASY:

创建一个     byte [] buffer;

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];