在Android中,可以使用以下代码示例来解决当保存位图到存储中时,imgView.getDrawingCache()会裁剪位图的问题:
// 获取ImageView的绘图缓存
imgView.setDrawingCacheEnabled(true);
imgView.buildDrawingCache();
// 获取原始位图
Bitmap originalBitmap = imgView.getDrawingCache();
// 创建一个新的位图,并将原始位图复制到新位图中
Bitmap newBitmap = Bitmap.createBitmap(originalBitmap);
// 释放绘图缓存
imgView.setDrawingCacheEnabled(false);
imgView.destroyDrawingCache();
// 保存新位图到存储中
String imagePath = "/storage/emulated/0/image.jpg";
try {
FileOutputStream fos = new FileOutputStream(imagePath);
newBitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
// 图片保存成功
} catch (IOException e) {
e.printStackTrace();
// 图片保存失败
}
在上面的代码中,首先启用ImageView的绘图缓存,并构建绘图缓存。然后通过getDrawingCache()
方法获取原始位图。接着,使用Bitmap.createBitmap()
方法创建一个新的位图,并将原始位图复制到新位图中。最后,禁用绘图缓存并销毁绘图缓存,然后使用FileOutputStream
将新位图保存到指定的存储路径。
需要注意的是,上述代码中的存储路径/storage/emulated/0/image.jpg
仅供参考,实际使用时需要根据具体需求修改存储路径。另外,需要确保在AndroidManifest.xml文件中添加了相应的存储权限。
希望能帮助到你!