我正在开发一个 android 应用程序,我必须在其中将图像从 sdcard 上传到 internet。为此,我正在使用 MediaStore 内容提供程序并从 MediaStore.Images.Media.DATA 列获取图像路径,现在我正在做的是创建一个 位图 从该路径使用 Bitmap.decodeFile(String path) 方法,然后在 List 的 ImageView 中显示该位图。我面临的问题是,当我尝试转到在列表中显示此图像的 Activity 时,我收到这样的错误 10-20 11:10:47.070: ERROR/AndroidRuntime(922): java.lang .OutOfMemoryError:位图大小超出 VM 预算
任何人都可以建议我解决这个问题或实现我的目标的替代方法。提前致谢。
最佳答案
这种情况经常发生,因为存储在 sdcard 中的图像具有高分辨率,并且您的应用无法将图像大小处理为堆大小
在使用下面的行获取位图之后
Bitmap bmp = Bitmap.decodeFile(String path)
您应该尝试将其缩放到您需要的大小
newBmp = Bitmap.createScaledBitmap(bmp, 240, 320, true);
然后使用 newBmp
在您的 View 中进行设置。
关于android - 访问 sdcard 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7831706/