码迷,mamicode.com
首页 > 其他好文 > 详细

chromium截图实现

时间:2014-06-22 21:01:24      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:chromium   截图   surfaceview截图   

声明:本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截图实现,布布扣,bubuko.com

chromium截图实现

标签:chromium   截图   surfaceview截图   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!