我在Android上使用相机。 SurfaceHolder用于显示预览屏幕。我需要在SurfaceView上看到精确的逐像素图片。我该怎么做?
我尝试在
时获取Surface视图的尺寸public void surfaceChanged(SurfaceHolder holder,
int format, int width,
int height) {}
被调用,然后使用这些测量来转换拍摄的照片
public void onPictureTaken( byte[] data, Camera camera ) { }
这样可行,但仅适用于某些设备。其他设备扭曲了图片。
答案 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];