使用绘图缓存并保存到文件的屏幕截图会增加图像的噪点
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.
我有多个活动,每个活动都在屏幕上应用一些视觉效果,然后保存并将它的 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.