我想将预览框保存为jpeg图像。
我尝试编写以下代码:
public void onPreviewFrame(byte[] _data, Camera _camera)
{
if(settings.isRecording())
{
Camera.Parameters params = _camera.getParameters();
params.setPictureFormat(PixelFormat.JPEG);
_camera.setParameters(params);
String path = "ImageDir" + frameCount;
fileRW.setPath(path);
fileRW.WriteToFile(_data);
frameCount++;
}
}
但是无法将保存的文件作为jpeg图像打开。有谁知道如何将预览帧保存为jpeg图像?
由于
答案 0 :(得分:6)
结帐此代码。我希望它有所帮助
camera.setPreviewCallback(new PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
// TODO Auto-generated method stub
Camera.Parameters parameters = camera.getParameters();
Size size = parameters.getPreviewSize();
YuvImage image = new YuvImage(data, ImageFormat.NV21,
size.width, size.height, null);
Rect rectangle = new Rect();
rectangle.bottom = size.height;
rectangle.top = 0;
rectangle.left = 0;
rectangle.right = size.width;
ByteArrayOutputStream out2 = new ByteArrayOutputStream();
image.compressToJpeg(rectangle, 100, out2);
DataInputStream in = new DataInputStream();
in.write(out2.toByteArray());
}
}
});
camera.startPreview();
答案 1 :(得分:1)
你必须手动转换它,如果你浏览档案,在android-developers列表上有一些例子 - 主要处理格式(亮度/色度等)转换,然后将图像写入位图,然后保存到文件。
真的有点痛苦。
答案 2 :(得分:0)
我在预览之前用Camera.Parameters.setPreviewFormat(PixelFormat.JPEG)设置PreviewFormat,但似乎它无法真正设置预览格式...... 顺便说一句,预览的默认格式是YCbCr_420_SP ....
答案 3 :(得分:0)
您必须先通过调用 getSupportedPreviewFormats()来检查设备支持的预览格式。在调用 setPreviewFormat(PixelFormat.JPEG)之前,请确保支持JPEG。
答案 4 :(得分:0)
JPEG不是Camera Preview的格式。正如official documentation所说,
"目前仅支持ImageFormat.NV21和ImageFormat.YUY2"
要从Camera Preview获取图片,您需要定义预览格式,如下所示:
Camera.Parameters parameters;
parameters.setPreviewFormat(ImageFormat.NV21); //or ImageFormat.YU2
之后,你压缩&保存JPEG,如Dany的例子。
答案 5 :(得分:-1)
_data可能不是JPEG格式。在致电开始预览之前,您是否致电Camera.Parameters.setPreviewFormat(PixelFormat.JPEG)
了?