android - 访问 sdcard 镜像

标签 android bitmap sd-card

我正在开发一个 android 应用程序,我必须在其中将图像从 sdcard 上传到 internet。为此,我正在使用 MediaStore 内容提供程序并从 MediaStore.Images.Media.DATA 列获取图像路径,现在我正在做的是创建一个 位图 从该路径使用 Bitmap.decodeFile(String path) 方法,然后在 ListImageView 中显示该位图。我面临的问题是,当我尝试转到在列表中显示此图像的 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/

相关文章:

android - MAT (Eclipse Memory Analyzer) - 如何从内存转储中查看位图

android - 是否可以以编程方式设置 drawableLeft 可见性

java - 连接 JSONArrays

android - Android位图OOM(内存不足错误)

Android 图形 : Changing the alpha of just an image (not the background)

sdcard的android Intent 准备好了

audio - 多轨音频

c - 在 C 中连接字符串的最谨慎的方法

java - 可扩展列表子项中的复选框 OnCheckedChanged

java - 如何创建行之间具有不同背景的警报对话框列表