Android有什么改变图片分辨率软件的软件么

马上注册结交更多机友,下载哽多应用让你轻松玩转手机。

已有帐号   下载游戏和软件,请【】进入机锋市场!

好心人说下吧再说下具体的修改方法 谢谢

}

在平常的开发中,经常容易遇到的問题便是OOM的内存泄漏,而在泄漏的过程中,图片的问题一般占据榜首位置,即便在当前已经有了诸多优秀开源的图片缓存框架的情况下,有时候依舊不可避免.图片的加载消耗内存,大量的图片进行内存消耗,使用以后不加以回收等等都是导致图片内存泄漏的问题所在.

这时需要我们来理解圖片的内存使用情况,如何来解决问题.

图片由一个个的像素点构成,加载过程会创建一个二维数组,在数组中图片分辨率软件为x,y,每一个像素点由ARGB組成,占据4个字节因此常理来说消耗的内存应该为:

我们来来观察一张的图片的在各个文件夹下的内存消耗状况.

  • 首先看看密度,密度值,代表分辨率软件之间的关系

// 通常机型能根据图片是否有Alpha通道来决定是否真正使用RGB_565但有的机型是强制应用,所以RGB_565还是得慎重使用 // 不需要压缩也不需要采样,直接返回null由外部处理 // 读取图片像素数组到内存中,设定的采样率

代码的核心在于使用BitmapFactory.Options获取到了图片一系列的信息,根据图片的信息和设备的分辨率软件作比较,判断是否进行缩放,以及如何缩放.

在缩放的处理上可以自行实现或者借鉴.

在这里我使用ImageLoder的计算采样方法(有现荿的干吗不用)

    通过对源图片的宽高和目标图片的宽高(设备的分辨率软件)进行循环压缩判断,直到获取到一个适合当前屏幕比例的采样率。并且在ImagView中因为有图片的样式风格还加入了ScaleType的区别处理,简直业界良心

获得采样率之后就可以将图片重新设置采样率输出Bitmap

压缩后的Drawable和设備的分辨率软件保持一致性.

这里我们只是获取了Drawable,如果是一些常用的甚至可以使用弱引用将其缓存下来,注意缓存的时候需要缓存的是Bitmap,而不是Drawable

 // 從弱引用缓存中获取

可以看出我即便这张图片的分辨率软件达到3500 * 5250,在经过压缩重新采样适配当前设备后,依然将其加载出来了,并且内存消耗仅囿5MB.

  • 设计师设计图片要根据主流分辨率软件设计
  • 攻城狮在放置图片时要根据设计师设计的图片分辨率软件来选择正确的文件夹并且尽量选择高分辨率软件的文件夹
  • 如果有低分辨率软件的图片而运行在高分辨率软件机型OOM崩溃需要进行图片的重新压缩采样处理即可解决内存问题
}

我要回帖

更多关于 分辨率软件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信