使用绘图缓存并保存到文件的屏幕截图会增加图像的噪点

Screenshot using drawing cache and saving to file adds noise to image

我有多个活动,每个活动都在屏幕上应用一些视觉效果,然后保存并将它的 uri 发送给另一个 activity,但是在每个过程(getDrawingCache + 保存 + 发送)之后,图像上会出现一些噪音,这是我的代码:

    FrameLayout frame1=(FrameLayout) findViewById(R.id.finalview_new);
            frame1.setDrawingCacheEnabled(true);
            frame1.buildDrawingCache();
            Bitmap bitmap=frame1.getDrawingCache();
             String fileName = "myImage";//no .png or .jpg needed
                try {
                    ByteArrayOutputStream bytes = 
       new    ByteArrayOutputStream();
                    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
                    FileOutputStream fo = 
       openFileOutput(fileName, aftertext.this.MODE_PRIVATE);
                    fo.write(bytes.toByteArray());
                    // remember close file output
                    fo.close();
                } catch (Exception e) {
                    e.printStackTrace();
                    fileName = null;
                }
                ed.setVisibility(View.VISIBLE);
                onCreate(null);

这是罪魁祸首

bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 

JPEG 是一种有损格式。使用 BitmapFormat.PNG option instead.