我正在拍摄WebView
的完整屏幕截图,并在ImageView
上显示位图。位图可以是7个屏幕高度。 (例如1440x14000 px)
我经常面对
的OutOfMemoryError。
我见过this
这表示将缩小版本加载到内存中但我不想丢失图像质量。网上有相同的方法。
有没有办法处理 OutOfMemoryError 而不加载缩小版本?
答案 0 :(得分:4)
位图可以是7个屏幕高度。 (例如1440x14000 px)
请注意,这意味着用户无法以全分辨率立即查看整个图像。
我经常面对OutOfMemoryError
在大多数设备上,加载大图像时会非常困难,因为您无法获得大的连续内存块。
这表示将缩小版本加载到内存中但我不想丢失图像质量
在某种程度上,您没有太多选择。如果您希望用户一次查看图片的完整范围,则必须缩放图像以适合屏幕。
有没有办法在不加载缩小版本的情况下处理OutOfMemoryError?
有ImageView
个替代品可提供平移和缩放功能。其中一些(例如this one)一次处理图像片段中的加载,无论当前缩放级别需要什么缩放,都可以使您更有可能向用户显示整个图像。
答案 1 :(得分:0)
当然,这不是解决方案,但我也不熟悉您的确切需求,所以这可能会对您有所帮助 - 您可以尝试在解码过程中使用位图选项。尝试使用Bitmap.Config.inPreferredConfig作为RGB_565 - 与默认ARGB_8888相比,这将减少位图的大小两倍。但是,当然,如果您在网页中使用复杂图像,可能会降低其质量。