android-cn / android-discuss

Android 问题交流讨论坛, 微信公众号:codekk, 网站:
https://github.com/android-cn/android-discuss/issues
Apache License 2.0
4.08k stars 536 forks source link

[问答]如何在不失真的条件下显示一张超高清的图片或者长图 #64

Open kaedea opened 9 years ago

kaedea commented 9 years ago

一个APP能使用的内存是有限制的(比如10M),如果一张图片的提及太大,直接读取这张图片的时候就会OOM,如何在不失真(不采用读取缩略图的情况)的情况下显示这张图片?

yaya2212 commented 9 years ago

平常所说的等比例压缩应该不会失真的吧

kaedea commented 9 years ago

针对这个问题,我自己一般用以下两种方法解决: 1、使用WebView来加载该图片; 2、使用MapView或者TileView来显示图片(类似地图的机制);

stackvoid commented 9 years ago

BitMapRegionDecoder

TileView

yjxandroid commented 9 years ago

我感觉按比例压缩就可以了

xuefengyang commented 9 years ago

通过计算BitmapFactory.Options 对象的inSamleSize 值 等比的压缩图片 。

tanranran commented 9 years ago

bitmap 有个方法就是分区域加载,一块一块的那种,类似于百度地图的机制。关于加载超大图片,这里有一个imageview。可以研究下。 https://github.com/davemorrissey/subsampling-scale-image-view