我正在尝试使用getDrawingCache()
方法截取视图的屏幕截图。当它给位图时,位图与我在应用程序上看到的质量不同。以下是我正在使用的代码:
view.buildDrawingCache();
Bitmap cacheBitmap = view.getDrawingCache();
ByteArrayOutputStream streamOut = new ByteArrayOutputStream();
cacheBitmap.compress(Bitmap.CompressFormat.PNG, 100, streamOut);
byte[] bitmapDataArry = streamOut.toByteArray();
我已经尝试了一些我从谷歌和SO获得的东西。像这样improve quality of getdrawingcache和improve quality of image。但仍然没有获得纯粹的图像质量。任何人都可以对这个或任何其他方法有任何建议,在不失去质量的情况下进行截屏。
答案 0 :(得分:0)
我猜你的问题是你在小屏幕设备上截取屏幕截图并且绘图缓存较小,因此屏幕截图本身较小但看起来不错,因为手机屏幕也很小。然后,如果您将此图像从 getDrawingCache 上传到服务器,然后尝试在具有更高分辨率屏幕的其他设备上显示该图像,则质量将呈现颗粒状和像素化。如果你是这种情况,那么显示它的原始图像或裁剪版本将有助于你保持质量。
另一种情况是您的视图可能正在获取旧缓存。 在这里你可以destroyDrawingCache()然后buildDrawingCache()。