【问题标题】:How to capture screenshot of surfaceview with background如何捕获具有背景的surfaceview的屏幕截图
【发布时间】:2012-07-16 13:13:07
【问题描述】:

在我的应用程序中,我想捕获带有 Surfaceview 的屏幕,但我无法捕获使用背景绘制的屏幕。如何保存与背景一起绘制的屏幕。请帮助我如何解决此问题。

         View content  = findViewById(R.id.relative21);
        content.setDrawingCacheEnabled(true);

        SurfaceHolder sfhTrack = drawingSurface.getHolder();
              sfhTrack.setFormat(PixelFormat.TRANSPARENT);

               private void getScreen() {
          // TODO Auto-generated method stub

             View content = findViewById(R.id.relative21);
                Bitmap bitmap = content.getDrawingCache();
            File myDir=new File("/sdcard/saved_images");
                myDir.mkdirs();
                Random generator = new Random();
                int n = 10000;
                n = generator.nextInt(n);
                String fname = "Image-"+ n +".png";
                File file = new File (myDir, fname);
                try 
                {

                    FileOutputStream ostream = new FileOutputStream(file);
                    bitmap.compress(CompressFormat.PNG, 100, ostream);
                    ostream.close();
                } 
                catch (Exception e) 
                {
                    e.printStackTrace();
                }
    }

我尝试了上面的代码,我可以保存背景,但我无法保存绘制的内容。

【问题讨论】:

    标签: android android-layout


    【解决方案1】:
       public static Bitmap overlay(Bitmap bmp1,Bitmap bmp2) {
            Bitmap bmOverlay = Bitmap.createBitmap(bmp1.getWidth(), bmp1.getHeight(),      bmp1.getConfig());
            Canvas canvas = new Canvas(bmOverlay);
            canvas.drawBitmap(bmp1, 0,0, null);
    
            canvas.drawBitmap(bmp2, 0, 0, null);
            Log.i("bmOverlay.......",""+bmOverlay);
            bmp3=bmOverlay;
            return bmOverlay;
        }
    
           private void getScreen() {
            Toast.makeText(BookType1.this, "saved", Toast.LENGTH_SHORT).show();
              File myDir=new File("/sdcard/saved_images");
                myDir.mkdirs();
                Random generator = new Random();
                int n = 10000;
                n = generator.nextInt(n);
                String fname = "Image-"+ n +".png";
                File file = new File (myDir, fname);
    
    
            try 
            {
    
                FileOutputStream ostream = new FileOutputStream(file);
                bmp3.compress(CompressFormat.PNG, 100, ostream);
    
    
                ostream.close();
            } 
            catch (Exception e) 
            {
                e.printStackTrace();
            }
        }
    

    通过重叠两个位图,我在一个位图中解决了这个问题,我捕获了背景,在第二个位图中,我捕获了表面视图,我在这两个位图中都重叠了,我得到了解决方案。

    【讨论】:

    • 我也试图捕捉表面视图的帧,但它返回给我透明帧(位图),请问有什么想法/建议吗?
    • @Shubh 嗨,你找到捕捉表面视图帧的方法了吗?
    • 很久以前了..我需要检查一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多