加载非常大的位图

时间:2016-12-16 13:35:39

标签: android bitmap out-of-memory

我正在拍摄WebView的完整屏幕截图,并在ImageView上显示位图。位图可以是7个屏幕高度。 (例如1440x14000 px)

我经常面对

  

的OutOfMemoryError。

我见过this

这表示将缩小版本加载到内存中但我不想丢失图像质量。网上有相同的方法。

有没有办法处理 OutOfMemoryError 而不加载缩小版本?

2 个答案:

答案 0 :(得分:4)

  

位图可以是7个屏幕高度。 (例如1440x14000 px)

请注意,这意味着用户无法以全分辨率立即查看整个图像。

  

我经常面对OutOfMemoryError

在大多数设备上,加载大图像时会非常困难,因为您无法获得大的连续内存块。

  

这表示将缩小版本加载到内存中但我不想丢失图像质量

在某种程度上,您没有太多选择。如果您希望用户一次查看图片的完整范围,则必须缩放图像以适合屏幕。

  

有没有办法在不加载缩小版本的情况下处理OutOfMemoryError?

ImageView个替代品可提供平移和缩放功能。其中一些(例如this one)一次处理图像片段中的加载,无论当前缩放级别需要什么缩放,都可以使您更有可能向用户显示整个图像。

答案 1 :(得分:0)

当然,这不是解决方案,但我也不熟悉您的确切需求,所以这可能会对您有所帮助 - 您可以尝试在解码过程中使用位图选项。尝试使用Bitmap.Config.inPreferredConfig作为RGB_565 - 与默认ARGB_8888相比,这将减少位图的大小两倍。但是,当然,如果您在网页中使用复杂图像,可能会降低其质量。