![](/img/trans.png)
[英]How to Capture image from Camera Application in Android Programming?
[英]How to capture preview image frames from Camera Application in Android Programming?
我正在編寫一個應用程序來捕獲相機預覽幀並將其轉換為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);
在我開始預覽之后,使用數據調用回調,但位圖為空。
將字節數組轉換為BitMap時,我做錯了什么?
在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();
}
}
}
另一種拍照方式,看看這篇文章: 如何在android中使用相機
在使用BitmapFactory之前,您是否嘗試將預覽幀數據解碼為RGB? 默認格式是YUV,我不確定它與BitmapFactory兼容。 Dave Manpearl的解碼方法可以在這里找到:
如果有效,請告訴我。
干杯,
保羅
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.