文档章节

加载大图片,防内存溢出

cuncaojin
 cuncaojin
发布于 2015/06/11 00:15
字数 192
阅读 12
收藏 0
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BitmapFactory.Options;
import android.view.Display;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void click(View v){
        Options opt = new Options();
        //不解析像素信息,只解析图片宽高
        opt.inJustDecodeBounds = true;
        //不再解析像素信息,就不需要申请内存
        BitmapFactory.decodeFile("sdcard/dog.jpg", opt);
        
        //获取图片宽高
        int imageWidth = opt.outWidth;
        int imageHeight = opt.outHeight;
        
        //获取屏幕宽高
        Display dp = getWindowManager().getDefaultDisplay();
        int screenWidth = dp.getWidth();
        int screenHeight = dp.getHeight();
        
        //计算缩放比例
        int widthScale = imageWidth / screenWidth;
        int heightScale = imageHeight / screenHeight;
        
        //最终使用的缩放比例
        int scale = 1;
        if(widthScale >= heightScale && widthScale > 1){
            scale = widthScale;
        }
        else if(widthScale < heightScale && heightScale > 1){
            scale = heightScale;
        }    
        
        opt.inSampleSize = scale;
        opt.inJustDecodeBounds = false;
        //先缩小,再加载
        Bitmap bm = BitmapFactory.decodeFile("sdcard/dog.jpg", opt);
        
        ImageView iv = (ImageView) findViewById(R.id.iv);
        iv.setImageBitmap(bm);
    }

}

本文转载自:zk

共有 人打赏支持
cuncaojin
粉丝 1
博文 45
码字总数 2950
作品 0
郑州
私信 提问
android之图片异步加载并缓存到本地

在android项目中访问网络图片是非常普遍性的事情,如果我们每次请求都要访问网络来获取图片,会非常耗费流量,而且图片占用内存空间也比较大,图片过多且不释放的话很容易造成内存溢出。针对...

感觉太煽情
2015/09/24
443
0
如何在JPanel上快速有效地加载图片

不知道大家在用Java写UI界面的时候有没有遇到过想这样的问题:在一个面板(JPanel)上添加图片就像这样: 当你在调用repaint()让面板上显示另一张图片的时候,第二张照片就直接draw在第一张的...

mr桀骜不驯
2012/09/20
3.2K
7
如何释放imageview引用的图片

最近使用gridview和imageview做一个相册浏览器,对bitmpa本身做好合理的使用和释放,但发现图片加载到一定次数后还是会出现内存溢出的错误.经测试,合集里的bitmap全都有被正常释放,但通过image...

gzcf
2014/04/07
1K
1
Android解决大图片内存溢出

在Android平台上内存溢出是一件很头疼的事情,但解决办法还是有的,今天来翻译一篇谷歌官方提供的解决方案,原文可以参见:http://developer.android.com/training/displaying-bitmaps/load-bi...

hhs
2012/08/28
0
0
Android图片加载库Glide和Fresco是如何工作的

原文地址:https://blog.mindorks.com/how-the-android-image-loading-library-glide-and-fresco-works-962bc9d1cc40 通常,我们在加载图片的时候经常会遇到如下的问题: 内存溢出错误 图片加...

尺锤
2017/09/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

使用Autowired和Qualifier解决多个相同类型的bean如何共存的问题

注意: 实现类UserServiceImpl,MyUserServiceImpl 需要区分:@Service("userServicel") @Service("myUserService") https://blog.csdn.net/russle/article/details/80287763......

qimh
18分钟前
1
0
SQL 语句使用to_char函数时,检索结果有空格

小疯在使用Oracle过程中,使用to_char函数检索表数据时发现检索结果前面会有一个空格,对后续开发有影响。问题很好解决,比较直接对可以做一下trim处理。但是小疯很疑惑为什么会有空格呢,于...

野小疯
20分钟前
1
0
对接比特币钱包的PHP开发包

BtcTool是一个基于第三方服务和离线裸交易实现的PHP比特币应用开发包,适合不希望部署本地 节点旳PHP开发者,开发包主要包含以下特性: 利用第三方服务获取指定地址的utxo集合 离线生成消费裸...

汇智网教程
38分钟前
1
0
【自用】 VHD to VHDX

VHDX: 在VHD 2TB 的基础上提供 64TB的容量。 支持逻辑扇区大小为 4KB,和每块的大小为 256MB,来优化虚拟磁盘性能。 比VHD提供更高的安全性、可靠性和性能。 convert-VHD –path d:\Hyper-v...

Tensor丨思悟
50分钟前
3
0
30 岁转行做Python开发晚吗?而且是零基础

最近有小伙伴问小编,30 岁转行做Python开发晚吗? 小编想说,其实无论男女,只要想学,有这个动力,就直接去行动。无论年龄,无论性别,只要你想一直勇往直前,那么想做的就去做吧~这里有一...

糖宝lsh
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部