Hon*_*Yan 9 camera android bitmap
我正在编写一个应用程序来捕获相机预览帧并将其转换为Android中的位图.这是我的代码:
Camera.PreviewCallback previewCallback = new Camera.PreviewCallback()
{
public void onPreviewFrame(byte[] data, Camera camera)
{
try
{
BitmapFactory.Options opts = new BitmapFactory.Options();
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);//,opts);
}
catch(Exception e)
{
}
}
};
mCamera = Camera.open();
mCamera.setPreviewCallback(previewCallback);
Run Code Online (Sandbox Code Playgroud)
在我开始预览之后,使用数据调用回调,但位图为空.
将字节数组转换为BitMap时,我做错了什么?
小智 19
在该onPreviewFrame()功能中,您应该首先检查图像格式.
这是NV21的例子.
public void onPreviewFrame(byte[] data, Camera camera)
{
Parameters parameters = camera.getParameters();
imageFormat = parameters.getPreviewFormat();
if (imageFormat == ImageFormat.NV21)
{
Rect rect = new Rect(0, 0, PreviewSizeWidth, PreviewSizeHeight);
YuvImage img = new YuvImage(data, ImageFormat.NV21, PreviewSizeWidth, PreviewSizeHeight, null);
OutputStream outStream = null;
File file = new File(NowPictureFileName);
try
{
outStream = new FileOutputStream(file);
img.compressToJpeg(rect, 100, outStream);
outStream.flush();
outStream.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
另一种拍照方式,看看这篇文章:如何在android中使用相机
小智 1
在使用 BitmapFactory 之前,您是否尝试过将预览帧数据解码为 RGB?默认格式是 YUV,我不确定它是否与 BitmapFactory 兼容。Dave Manpearl 的解码方法可以在这里找到:
让我知道它是否有效。
干杯,
保罗
| 归档时间: |
|
| 查看次数: |
54397 次 |
| 最近记录: |