首页 > 代码库 > 常用图片加载框架

常用图片加载框架

  我们在项目中使用的是Picasso.其实现在的主流图片加载框架除了Picasso还有ImageLoader,Glide,以及Fresco.ImageLoader是比较老的框架了,稳定, 加载速度适中, 缺点在于不支持GIF图片加载, 使用稍微繁琐, 并且缓存机制没有和http的缓存很好的结合, 完全是自己的一套缓存机制.Glide是谷歌的一位工程师开发的,它可以说是Picasso的升级版, 有Picasso的优点, 并且支持GIF图片加载显示, 图片缓存也会自动缩放, 默认使用RGB_565格式缓存图片, 是Picasso缓存体积的一半;Fresco是facebook开发的优秀框架.我们用的是Picasso,基本能够满足项目的需求了.

1.Picasso 框架
使用步骤:
Picasso.with(context).load(imageUrl).into(imageView);
特点是:
?1、自动将图像缓存在本地;
?2、通过图片压缩转换以减少内存消耗;
?3、自动处理了ImageView的回收,即自动取消不在视野范围内的ImageView视图资源的加载;
?4、适配器:适配器自动发现和重用以前取消的下载:
?5、图像格式转换:很多时候需要将图片进行格式转换或者剪切以节省内存或者达到布局效果:
裁剪大小方法:
Picasso.with(context).load(imageUrl).resize(50, 50).centerCrop().info(imageView);
?6、加载本地图片

除了通过网络下载图片,Picasso也可以载入本地图片资源:

    Picasso.with(context).load(R.drawable.icon).into(imageView);
    Picasso.with(context).load("file:///android_asset/Android.png").into(imageView);
    Picasso.with(context).load(new File(...)).into(imageView);

?7、占位符图片:

所谓的占位符图像即当图片未正常显示时默认的图片,通过placeholder()设置,Picasso也支持设置图片显示错误时显示的默认图片

通过error()设Picasso.with(context).load(imageUrl).placeholder
(R.drawable.image_placeholder).error
(R.drawable.image_error_placeholder).into(imageView);

 

四大图片加载框架的优缺点:

Picasso, ImageLoader, Fresco, Glide优劣
其实这三者实现机制都差不多.首先看Fresco, 它的优点是其他几个框架没有的, 或者说是其他几个框架的短板. Fresco:
优点:
?图片存储在安卓系统的匿名共享内存, 而不是虚拟机的堆内存中, 图片的中间缓冲数据也存放在本地堆内存, 所以, 应用程序有更多的内存使用, 不会因为图片加载而导致oom, 同时也减少垃圾回收器频繁调用回收Bitmap导致的界面卡顿, 性能更高.
?渐进式加载JPEG图片, 支持图片从模糊到清晰加载
?图片可以以任意的中心点显示在ImageView, 而不仅仅是图片的中心.
?JPEG图片改变大小也是在native进行的, 不是在虚拟机的堆内存, 同样减少OOM
?很好的支持GIF图片的显示
缺点:
?框架较大, 影响Apk体积
?使用较繁琐

 

 

常用图片加载框架