【问题标题】:java.lang.OutOfMemoryError while decoding URL into Bitmap Android?java.lang.OutOfMemoryError 将 URL 解码为 Android 位图?
【发布时间】:2014-11-09 06:19:52
【问题描述】:

我已经创建了具有从 URL 解码的图像的 android 应用程序。将 URL 解码为位图时出现以下错误。它发生在随机电话上。最好的情况是不发生错误。

以下是错误:

Caused by: java.lang.OutOfMemoryError
       at android.graphics.BitmapFactory.nativeDecodeStream(BitmapFactory.java)
       at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:663)
       at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:735)

这是我用来解码图片网址的代码:

  Bitmap mIcon11 = null;
String filePath = imageURL;
InputStream in = null;
in = new java.net.URL(filePath).openStream();
BitmapFactory.Options o = new BitmapFactory.Options();
o.inSampleSize = 8;
o.inJustDecodeBounds = true;
o.inPurgeable = true;
mIcon11 = BitmapFactory.decodeStream(in);
return mIcon11; 

无论如何我都不希望它崩溃。

请帮忙

【问题讨论】:

标签: android bitmap


【解决方案1】:

您可以使用通用图像加载器库。 它对图像有很好的处理能力,也为它们提供了缓存。 https://github.com/nostra13/Android-Universal-Image-Loader

您可以使用:- ImageLoader.getInstance().loadImageSync(uri, targetImageSize, options);

【讨论】:

  • 我正在使用毕加索,我提供了将图像设置为墙纸的选项,我需要将 URL 解码为位图,然后输入到方法中。
  • 我认为 Universal Image Loader 对位图的处理有很好的实现尝试解决这个问题。
【解决方案2】:

嗨 vo12 使用 Aquery (https://code.google.com/p/android-query/wiki/ImageLoading) 或通用库 (https://github.com/nostra13/Android-Universal-Image-Loader) 来管理图像的解码或管理图像,这些在我看来是最好的我也遇到过类似的问题,我使用了这些现在内存不足错误很少见。

【讨论】:

  • 我正在使用毕加索,我提供了将图像设置为墙纸的选项,我需要将 URL 解码为位图,然后输入到方法中。
【解决方案3】:

在我的情况下,我通过减少图像的宽度和高度来修复这种类型的错误。它也可能在你的情况下,并且错误与你的相同“由:java.lang.OutOfMemoryError”引起。仔细检查您在应用程序中使用的所有图像,可能是某些图像的宽度/高度与其他图像不同。我认为您会在某些特定设备上崩溃,而不是在所有 android 设备上(因为我的场景,我的应用程序是无法使用三星 s3、s4 note 2、xperia c 等打开,但一切都很好)。实际上它的图像原因在设备屏幕上是不可调整的。

【讨论】:

  • 您好图片大小相同。实际上我正在设置壁纸,它需要一个位图对象作为输入,所以在解码时失败
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
  • 1970-01-01
  • 2015-05-15
  • 1970-01-01
  • 2015-12-19
  • 1970-01-01
相关资源
最近更新 更多