问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

android 图片占用内存大小怎么计算

发布网友 发布时间:2022-04-23 01:34

我来回答

1个回答

热心网友 时间:2023-06-23 21:23

1、将图片转化为缩略图再加载: 代码如下 1 BitmapFactory.Options options = new BitmapFactory.Options(); 2 options.inSampleSize = 2; 3 Bitmap img = BitmapFactory.decodeFile("/sdcard/1.png", options); 该段代码即是读取1.png的缩略图,长度、宽度都只有原图片的1/2。图片大小减少,占用的内存自然也变小了。这么做的弊端是图片质量变差,inSampleSize的值越大,图片的质量就越差。由于各手机厂商缩放图片的算法不同,在不同手机上的缩放图片质量可能会不同。笔者就遭遇过moto手机上图片缩放后质量可以接受,三星手机上同样的缩放比例,质量却差很多的情况。 2、用ARBG_4444颜色模式加载图片: Android中有四种,分别是: ALPHA_8:每个像素占用1byte内存 ARGB_4444:每个像素占用2byte内存 ARGB_8888:每个像素占用4byte内存 RGB_565:每个像素占用2byte内存 Android默认的颜色模式为ARGB_8888,这个颜色模式色彩最细腻,显示质量最高。但同样的,占用的内存也最大。 代码如下 1 BitmapFactory.Options options = new BitmapFactory.Options(); 2 options.inPreferredConfig = Bitmap.Config.ARGB_4444; 3 Bitmap img = BitmapFactory.decodeFile("/sdcard/1.png", options); 以上代码即是将1.png以ARGB_4444模式读出。内存减少虽然不如第一种方法明显,但是对于大多数图片,看不出与ARGB_8888模式有什么差别。不过在读取有渐变效果的图片时,可能有颜色条出现。另外,会影响图片的特效处理。 3、调用图片的recycle()方法: 这个其实不是真正降低图片内存的方法。主要目的是标记图片对象,方便回收图片对象的本地数据。图片对象的本地数据占用的内存最大,而且与程序Java部分的内存是分开计算的。所以经常出现Java heap足够使用,而图片发生OutOfMemoryError的情况。在图片不使用时调用该方法,可以有效降低图片本地数据的峰值,从而减少OutOfMemoryError的概率。不过调用了recycle()的图片对象处于“废弃”状态,调用时会造成程序错误。所以在无法保证该图片对象绝对不会被再次调用的情况下,不建议使用该方法。特别要注意已经用setImageBitmap(Bitmap img)方法分配给控件的图片对象,可能会被系统类库调用,造成程序错误。 4、使用Matrix对象放大的图片如何更改颜色模式: 虽然使用Matrix对象放大图片,必定会耗费更多的内存,但有时候也不得不这样做。放大后的图片使用的ARGB_8888颜色模式,就算原图片是ARGB_4444颜色模式也一样,而且没有办法在放大时直接指定颜色模式。可以采用以下办法更改图片颜色模式。 代码如下 Matrix matrix = new Matrix(); float newWidth = 200;//图片放大后的宽度 float newHeight = 300;//图片放大后的长度 matrix.postScale(newWidth / img.getWidth(), newHeight/ img.getHeight()); Bitmap img1 = Bitmap.createBitmap(img, 0, 0, img.getWidth(), img.getHeight(), matrix, true);//得到放大的图片 img2 = img1.copy(Bitmap.Config.ARGB_4444, false);//得到ARGB_4444颜色模式的图片 img = null; img1 = null; 这里比起原来的图片额外生成了一个图片对象img1。但是系统会自动回收img1,所以实际内存还是减少了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
昭君怨诗词大全(5首昭君怨古词) 道是春来花未,道是雪来香异。竹外一枝斜,野人家。词中吟诵的是 萌萌带着自己的压岁钱去买笔记本,买了2本后还剩1.8元。如果买同样的笔记... ...1.8元,买同样的作业本四本差2.4元,作业本多少钱一本。给算得方法说... ...如果买同样的硬面钞4本则差2.40元,那么小明带了多少钱? 小明带一些钱去买作业本,买两本之后还剩1.8元;如果买同样的练习本4本则... 我的QQ总是被盗,烦死了,我总要改密码,怎样才不会被盗密码? 我跟一个好兄弟绝交了有1年9个月,没有联系没有来往,但我的心一直惦记... ...了。最近他听说我生病做手术回来了,就去班长那里问我的近况,加我... 请问神舟七号载人航天飞行的圆满成功,将对我国经济产生哪些积极影响... 电脑进水怎么办 电脑主机装风扇是风对里面吹好?还是把主机里面热吸出来好? 笔记本电脑进水了,吹风扇吹了一天一夜了。可以拿到太阳底下晒吗?求 电脑里的风扇正面是往里吸风还是往外排风? 电脑主机的电源风扇的风是吹进去还是吹出来的呀? 电脑散热的风扇是把外面的空气吸进来还是排出去,严重迷惑中。。 电脑机箱风扇是往里吹还是往外吸的好? 高速强制办理ETC,不办理就不让上高速,这样做你能接受吗? 电脑机箱风扇往外吹还是往里吸比较好( CPU在机箱中间 )? 男子未办ETC收费员不让上高速,为何如此霸气? 电脑主机底部的电源风扇风扇朝下,然后是要吸气进去还是排气出来? 高速兔费时没办ETC是否都可通行? 冷风扇为什么吸水?为什么风扇水会被吸取,原理是什么呢? 不上高速也必须要办ETC吗?办了有什么好处吗? 电脑显卡风扇的风是吹出来还是吸进去的啊今天把显卡拆下来清理原来好像是把风吹出去的,现在是吸进去 货车过了元旦不办理ETC能上高速吗? 笔记本电脑风扇进水了怎么办 我只想知道不办etc走高速能不能免费? 我的电脑排风扇进水了怎么办啊? 现在上高速一定要办Etc了吗? android怎么压缩一个bitmap占用空间大小 recycleview怎么使用 如何自动创建自解压格式压缩文件 android,程序中如何改变ImageView大小 Java如何读取文件夹中所有图片,并显示出来 关于android里的 recycle()解释 怎么防止imagecreatefromjpeg内存溢出 在Android开发中,有哪些好的内存优化方式 winrar.是压缩软件?可我不会用?怎么用? 有人知道怎么解决安卓模拟器的内存溢出问题吗 Android图片太多,而出异常,哪位高手给解决一下啊? android 如何重写imageview 让图片有圆角效果 肉酱时蔬米线的做法,肉酱时蔬米线怎么做好吃 蔬菜米线的做法步骤图,蔬菜米线怎么做好吃 win7窗口预览怎么设置 在家做米线放什么蔬菜 关闭Win7中的任务栏窗口预览功能 上海话叫米线的蔬菜怎么做好吃? W7怎么设置预览窗口 重庆的三鲜米线是怎么做的哦?