android - 显示质量图像 - 位图大小超出 VM 预算错误

标签 android image bitmap out-of-memory

我需要创建一个图库类型的应用程序。我需要显示许多图像并提供缩放和滑动效果的地方。
现在我正在使用 android.widget.Gallery 并在我的图库 Adaptergetview 中将图像设置为 imageview类(扩展 BaseAdapter)。我使用位图设置图片,通过以下代码设置

Bitmap  mBitmap = BitmapFactory.decodeFile(imagePathArray.get(position));
imageview.setImageBitmap(mBitmap);

一开始它工作正常,但在移动到第三张或第四张图片后,应用程序崩溃并出现以下错误

  ERROR/AndroidRuntime(12184):  FATAL EXCEPTION: main
  ERROR/AndroidRuntime(12184):  java.lang.OutOfMemoryError: bitmap size exceeds VM budget 

在 decodeFile 语句中。

当我搜索 bitmap size exceeds VM budget 时,我得到了很多解决方案,例如 android-strange-out-of-memory-issue .但是所有的解决方案都会降低图像质量。
以较少内存显示高质量图像且不会导致位图大小超出 VM 预算的最佳方法是什么?
有什么建议吗?
谢谢

最佳答案

唯一的解决方案是加载较小尺寸的位图(BitmapFactory.Options 允许您在加载时对位图重新取样),或者尝试回收其他您可能已加载但不再需要的大位图.

关于android - 显示质量图像 - 位图大小超出 VM 预算错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4821210/

相关文章:

android - 线性布局显示不正确

android - 如何阻止 Android Studio 打开多个窗口?

css - 横幅和标题

reactjs - 如何使用 React 检查文件扩展名

Android 在解码位图时返回 null

android - IllegalArgumentException : No view found for id for fragment --- ViewPager in ViewPager

android - (180 ringing)连接通话时没有铃声 android pjsip (pjsua2)

php - 以编程方式设置基本图像

c++ - 如何仅使用直接 WinAPI 将与设备无关的位图放入 Windows 剪贴板? (没有 MFC 或其他包装器)

java - 加载-操作-更新图片/像素的最佳方法是什么?