有另一种方式,我如何做同样的事,可以帮助你: 拍照:
init camera并设置onPictureTaken方法。
相机相机= Camera.open(); if(camera!= null) { camera.takePicture(null,null,jpeg); }
现在实现名为“jpeg”的Camera.PictureCallback,在其中您将获得JPEG格式的捕获图像
在onSurfaceChanged方法中设置所需的图像格式
public void surfaceChanged(SurfaceHolder holder,int format,int w,int h) { if(holder!= null&& camera!= null) { camera.stopPreview(); Camera.Parameters parameters = camera.getParameters(); parameters.setPictureFormat(PixelFormat.JPEG); camera.setParameters(参数); camera.setPreviewDisplay(保持器); camera.startPreview(); } }
用于录制视频
初始摄像头。
相机相机= Camera.open();
init媒体录制器并在录制器上设置所需的视频格式
if(camera!= null) { 尝试{ camera.stopPreview();
MediaRecorder recorder = new MediaRecorder(); recorder.setCamera(camera); recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); recorder.prepare();
}
来源:for 的 拍照片 强> ,为 的 录视频 强>
这是NV21。见 在线文件 。 要将数据保存为JPEG,您可以执行以下操作:
YuvImage im = new YuvImage(preview_data, ImageFormat.NV21, preview_width, preview_height, null); int quality = 90; Rect rect = new Rect(0, 0, preview_width, preview_height); FileOutputStream output = new FileOutputStream("/sdcard/test.jpg"); im.compressToJpeg(rect, quality, output); output.flush(); output.close();