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

发布于 2024-10-14 12:20:22 字数 875 浏览 2 评论 0原文

我需要创建一个画廊类型的应用程序。我需要在哪里显示许多图像并给出缩放和滑动效果。
现在我正在使用 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语句中

。当我搜索位图大小超出虚拟机预算时,我得到了很多解决方案,例如android-奇怪的内存不足问题。但所有解决方案都会降低图像质量。
以更少的内存显示高质量图像且不会导致位图大小超出虚拟机预算的最佳方法是什么?
有什么建议吗?
谢谢

I need to create a gallery type application. Where i need display many image and give the zooming and sliding effects.
Now I am using android.widget.Gallery and setting the image to imageview in the getview of my gallery Adapter class (extends BaseAdapter). Me set image using bitmap, which is set by the following code

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

It works fine at first, but after moving to third or fourth image the application crash with the following error

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

at the decodeFile statement.

When i searched for bitmap size exceeds VM budget, i got a lot of solutions like android-strange-out-of-memory-issue. But all solutions are reducing the image quality.
What is the best method to display image in good quality and with less memory, that will not cause bitmap size exceeds VM budget?
Any suggestion?
Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无人接听 2024-10-21 12:20:22

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

The only solution you have is to load your bitmap at a smaller size (BitmapFactory.Options lets you resample a bitmap at load time), or try to recycle other large bitmaps you may have loaded and that you don't need anymore.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文