php调用chromium截图,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,网上讲的很多,这里不再赘述

原文:http://blog.csdn.net/u011882998/article/details/32708811

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值