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