从surfaceview保存图片

Posted

技术标签:

【中文标题】从surfaceview保存图片【英文标题】:save pictures from surfaceview 【发布时间】:2015-10-24 18:50:24 【问题描述】:

可以吗?我想要一个服装相机(小于屏幕)我想要预览和拍照。 我尝试了很多代码,但都没有正常工作

How to capture image from custom CameraView in android?

【问题讨论】:

***.com/questions/27817577/… 【参考方案1】:

是的,这是可能的,并且您链接中的代码在常见情况下是正确的。但是,如果您尝试在回调中将数据转换为特定格式,您还应该检查一件事:

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

您可以使用method查看Camera arg的图片格式:

public int getPictureFormat ()

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

来自 Android 开发者BitmapFactory 文档:

在 KITKAT 之前应用附加限制:正在解码的图像 (无论是作为资源还是作为流)必须是 jpeg 或 png 格式。 仅支持大小相等的位图,其中 inSampleSize 设置为 1。 此外,重用位图的配置将覆盖 inPreferredConfig 的设置(如果已设置)。

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

public Bitmap getBitmap ()

【讨论】:

以上是关于从surfaceview保存图片的主要内容,如果未能解决你的问题,请参考以下文章

如何将Bitmap保存为本地图片文件?

如何将图片从图片框保存为jpg

iOS之保存图片到系统相册和从系统相册选取一张或者多张照片

将图像从 plist 保存到图库

如何仅保存从我的图片框中显示的图像

C# 图片保存到数据库和从数据库读取图片并显示