chromium截图实现

声明:本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截图实现

时间: 2024-10-04 05:39:55

chromium截图实现的相关文章

Ubuntu再体验之【浏览器】--Chromium安装拓展程序、安装插件(360极速浏览器插件)

上次谈到了安装Chromium的Flash插件http://blog.csdn.net/rovast/article/details/38476129,有兴趣的同学可以再去看看 这次我们来看看如何安装Chrome插件(或者是360Chrome插件) [转载请注明出处:blog.csdn.net/rovast] 1.为什么要安装插件 在重新折腾上了Ubuntu Kylin 14.04后发现,谷歌被大陆屏蔽了,也就是通过在线安装插件的套路不可用了.但是在使用Windows操作系统的朋友注意到,国产的

Chromium网页绘图表面(Output Surface)创建过程分析

在Chromium中,Render进程在绘制网页之前,要为网页创建一个绘图表面.绘图表面描述的是网页经过渲染之后得到的输出.这个输出需要交给Browser进程处理,才能显示在屏幕上.在硬件加速渲染条件下,这个输出有可能是一个OpenGL纹理,也有可能是一系列需要进一步进行绘制的OpenGL纹理,取决于Render进程使用直接渲染器还是委托渲染器.本文接下来就对网页的绘图表面的创建过程进行详细分析. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! 关于网页绘

appium 学习各种小功能总结--功能有《滑动图片、保存截图、验证元素是否存在、》---新手总结(大牛勿喷,新手互相交流)

1.首页滑动图片点击 1 /** 2 * This Method for swipe Left 3 * 大距离滑动 width/6 除数越大向左滑动距离也越大. 4 * width:720 5 *height:1280 6 * @author Young 7 * @param driver2 8 * @param during 9 */ 10 public void swipeToLeft2(AndroidDriver driver2, int during) { 11 int width =

Linux下Google Chrome / Chromium标题栏乱码问题

最近在使用Chromium的时候tab的标题栏中文显示乱码,在地址栏输入中文是同样时乱码,就像下图: 看起来很是不爽,于是只好换做用系统自带的Fire Fox,但是用户习惯真的很强大啊....根本用不习惯....在网上搜了好久,终于看到了一篇比较靠谱的博文:Linux下Chrome标题栏中文乱码.试了一下,果然有效. 主要就是修改/etc/fonts/conf.d/49-sansserif.conf这个文件,截图如下: 需要将图中17行(<string>sans-serif</strin

1.1. chromium源代码分析 - chromiumframe - 介绍

本人能力有效,面对chromium庞大的代码就头大.还是先由前辈的chromiumFrame入手. 1. chromeFrame概貌 chromiumFrame是前辈的心血之作,以最小化的方式抽出chromium界面部分的代码,并以demo的方式展现给我.让我可以不用直接面对chromium这样的庞然大物. 先看看chromiumFrame目录结构, animation,静态库,动画类. base,基础静态库,一些logging,只能指针等基础的东东. gfx,画图的基础库,对windows上的

Chromium代码:实现GPU-&gt;GPU的直接图片传递,不需要通过CPU进行中转

commit0c4e9d8781aea6e52fdb4a7aee978817910c67ea authordongseong.hwang Thu Jan 08 20:11:13 2015 committerCommit bot Thu Jan 08 20:12:02 2015 media: Optimize HW Video to 2D Canvas copy. Currently, when we draws GPU decoded Video on accelerated 2D Canvas

有了 serverless,前端也可以快速开发一个 Puppeteer 网页截图服务

更多云原生技术资讯可关注阿里巴巴云原生技术圈. Puppeteer 是什么? puppeteer 官网的介绍如下: Puppeteer is a Node library which provides a high-level API to control Chrome or Chromium over the DevTools Protocol. Puppeteer runs headless by default, but can be configured to run full (non

关于在selenium 中 webdriver 截图操作

package prictce; import java.io.File; import java.io.IOException; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.OutputType; import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.We

mint下截图工具shutter的安装和使用设置

[原创作品,技术交流.允许转载,转载时请务必以超链接形式标明文章原始出处 .作者信息.如有错误,请指正] /** author: lihaibo date: 1/25/2016 */ 今天安装了双系统之后,有时候需要截图不是很方便,查了下linux下比较流行的截图工具:shutter 1.安装shutter 从开源社区下载:  http://www.oschina.net/p/shutter/ 操作命令: sudo add-apt-repository ppa:shutter/ppa sudo