从surfaceview保存图片

时间:2015-08-02 16:44:57

标签: android android-camera surfaceview

可以从surfaceview保存图片吗?我想要一台相机(小于屏幕)我想预览并拍照。 我尝试了很多代码但没有正常工作

How to capture image from custom CameraView in Android?

1 个答案:

答案 0 :(得分:0)

是的,通常情况下,链接的代码是正确的。但是,如果您尝试在回调中将数据转换为特定格式,还有一件事需要检查:

public void onPictureTaken(byte[] arg0, Camera arg1)

您可以使用method检查相机参数的图片格式:

public int getPictureFormat ()

这将为您设备中的相机返回ImageFormat(如JPEG,NV21,YUV等)。您应该使用此值从onPictureTaken正确格式化字节数据,因为BitmapFactory.decodeByteArray(arg0,0,arg0.length)方法只能与JPEG或PNG数据一起正常工作。

来自Android Developer BitmapFactory文档:

  

在KITKAT之前适用其他约束:正在解码的图像   (无论是作为资源还是作为流)必须采用jpeg或png格式。   仅支持相同大小的位图,inSampleSize设置为1。   此外,重用位图的配置将覆盖   设置inPreferredConfig,如果设置。

此外,我建议您使用TextureView而不是SurfaceView,因为在这种情况下,您可以使用简单的方法并通过此method从TextureView获取图片:

public Bitmap getBitmap ()