Sal*_*ani 4 android screenshot bitmap surfaceview
我正在尝试实现一种功能,包括录制视频时拍摄照片.这就是我结束使用SurfaceView的截图方法的原因.
但是,当我尝试使用SurfaceView的屏幕截图时.我总是得到一张空白图片.
这是我用于拍摄快照的代码:
View tempView = (View)MY_SURFACE_VIEW;
tempView.setDrawingCacheEnabled(true);
Bitmap tempBmp = Bitmap.createBitmap(tempView.getDrawingCache());
tempView.setDrawingCacheEnabled(false);
//Saving this Bitmap to a File....
Run Code Online (Sandbox Code Playgroud)
如果您认为这是一个重复的问题,请允许我向您保证,在询问此问题之前,我已经尝试过针对相同问题在SO上提供的以下解决方案.
互联网上的其他资源:
1.http ://www.coderanch.com/t/622613/Android/Mobile/capture-screenshot-simple-animation-project
2. http://www.phonesdevelopers.com/1795894/
到目前为止,这对我来说都没有.我也知道我们需要创建一些与Surface Holder交互并从中获取位图的Thread.但我不知道如何实现这一点.
任何帮助都得到高度赞赏.
这是另一个:截取SurfaceView的截图.
SurfaceViews有一个"表面"部分和一个"视图"部分; 您的代码尝试捕获"视图"部分."表面"部分是一个单独的层,并没有简单的"抓取所有像素"方法.基本的困难是你的应用程序位于表面的"生产者"一侧,而不是"消费者"方面,因此读取像素是有问题的.请注意,底层缓冲区采用的数据生成器最方便,因此对于相机预览,它将是YUV缓冲区.
"捕获"表面像素的最简单,最有效的方法是将它们绘制两次,一次用于屏幕,一次用于捕获.如果使用OpenGL ES执行此操作,则YUV到RGB转换可能由硬件模块完成,这比在YUV缓冲区中接收相机帧并进行自己的转换要快得多.
Grafika的 "相机纹理"活动演示了使用GLES操纵输入的视频数据.渲染后,你可以得到像素glReadPixels().glReadPixels()设备和不同用例之间的性能差异很大. EglSurfaceBase#saveFrame()显示如何捕获Bitmap并保存为PNG.
有关Android图形架构的更多信息,特别是SurfaceView曲面的生产者 - 消费者性质,可以在本文档中找到.
| 归档时间: |
|
| 查看次数: |
7405 次 |
| 最近记录: |