chromium截图实现
来源:互联网 发布:照相馆预约系统源码 编辑:程序博客网 时间:2024/05/16 03:25
声明:本blog是我自己写的,如果要转载,请注明:come from blog of niba!
chromium最终显示是在ContentView上,但通过硬件加速,渲染合成的网页之前是在surfaceview上的。
所以,实现chromium的截图可以通过SufraceView的截图去实现。
自己创建一个SurfaceView的子类,如下:
class ChromiumSurfaceView extends SurfaceView {
public ChromiumSurfaceView(Context context){
super(context);
}
@Override
public void onDraw(Canvas canvas) {
// We only need to draw to software canvases, which are used for taking screenshots.
if (canvas.isHardwareAccelerated()) return;
Bitmap bitmap = Bitmap.createBitmap(getWidth(), getHeight(),
Bitmap.Config.ARGB_8888);
if (nativeCompositeToBitmap(mNativeContentViewRenderView, bitmap)) {
canvas.drawBitmap(bitmap, 0, 0, null);
}
}
public void getBitmap(Canvas canvas){
this.onDraw(canvas);
}
}
通过方法getBitmap()间接去调用onDraw方法来实现将内容,进行绘制。
public void getScreenShot() {
Bitmap bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
Canvas bitCanvas = new Canvas(bitmap);
((ChromiumSurfaceView)mSurfaceView).getBitmap(bitCanvas);
try{
File file = new File("/data/data/com.hisense.goblin/test.jpeg");
FileOutputStream fos;
fos = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 5, fos);
fos.close();
}catch(Exception e){
e.printStackTrace();
}
}
通过这个方法就可以实现截屏了。
关于SurfaceView的其他信息,可以参考其他的blog,网上讲的很多,这里不再赘述
- chromium截图实现
- chromium 书签实现机制
- Chromium VideoCapture的实现
- chromium阅读模式实现
- chromium 书签实现机制
- chromium 书签实现机制
- chromium spdy实现解析
- chromium书签栏实现
- chromium audio 实现分析
- Chromium 智能指针实现
- Mac下安装Puppeteer,并利用chromium浏览器生成截图
- chromium设置UI的实现
- Chromium原码浅析 --- Chromium多线程的实现
- Chromium
- chromium
- delphi实现屏幕截图
- VC实现屏幕截图
- Android截图代码实现
- Java Socket通信的简单例子
- [Unity3d][NGUI] NGUI所见即所得之UIRoot
- 系统清理——查找大文件
- DSB,ISB,DMB指令
- cef1 mfc 对话框简单调用
- chromium截图实现
- winform窗体加背景图片后,控件多了会闪烁,该如何处理
- Android移植busybox
- 第一个入门例子
- SCSI miniport 驱动简单框架
- PHP编译参数的注释
- java 加密
- 一对父子的聊天记录
- bzoj 1860: [Zjoi2006]Mahjong麻将 题解