Android加载大图

1.利用BitmapFactory.OptionsinJustDecodeBounds属性来读取图片尺寸.
参考:Bitmaps加载之高效加载大图
这样做加载一个大图肯定会失真,如果不想失真,应该怎么做呢?


2.首先不压缩,按照原图尺寸加载,那么屏幕肯定是不够大的,并且考虑到内存的情况,不可能一次性整图加载到内存中,所以肯定是局部加载,那么就需要用到一个类:BitmapRegionDecoder
参考 [Android 高清加载巨图方案 拒绝压缩图片]

mImageView = (ImageView) findViewById(R.id.id_imageview);
try
{
    InputStream inputStream = getAssets().open("tangyan.jpg");

    //获得图片的宽、高
    BitmapFactory.Options tmpOptions = new BitmapFactory.Options();
    tmpOptions.inJustDecodeBounds = true;
    BitmapFactory.decodeStream(inputStream, null, tmpOptions);
    int width = tmpOptions.outWidth;
    int height = tmpOptions.outHeight;

    //设置显示图片的中心区域
    BitmapRegionDecoder bitmapRegionDecoder = BitmapRegionDecoder.newInstance(inputStream, false);
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inPreferredConfig = Bitmap.Config.RGB_565;
    Bitmap bitmap = bitmapRegionDecoder.decodeRegion(new Rect(width / 2 - 100, height / 2 - 100, width / 2 + 100, height / 2 + 100), options);
    mImageView.setImageBitmap(bitmap);


} catch (IOException e)
{
    e.printStackTrace();
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容