Picasso:
是Square公司开源的项目,功能强大调用简单:
//用法1:加载全尺寸的图片到内存,然后让GPU来实时重绘大小
Picasso.with(this) .load(“http://**.jpg“) .into(ivImgPicasso);
//用法2:需要去设置ImageView大小值
Picasso.with(this) .load(“http://**.jpg“) .resize(768, 432) .into(ivImgPicasso);
//用法3:按统一比例缩放图片。与Glide加载图片内存开销差不多。
Picasso.with(this) .load(“http://**.jpg“) .fit() .centerCrop() .into(ivImgPicasso);
Glide:
glide是谷歌员工开源的一个项目。用法是:Glide.with(this).load("url 图片文件 字节数组").into(imageView);
Glide与Picasso的对比:
1,内存:加载一张图片Picasso的内存开销要远大于Glide。
2,Image质量细节:Glide默认的是Bitmap格式是RGB-565;Picasso默认ARGB_8888格式。因此Glide加载的图片没有Picasso那么平滑,但是很难察觉。
3,磁盘缓存:Picasso缓存的是全尺寸的。Glide会根据ImageView的大小缓存尺寸相同的。
让Glide即缓存全尺寸的,有缓存其他大小的方式:
Glide.with(this) .load(“http://**.jpg“).diskCacheStrategy(DiskCacheStrategy.ALL) .into(ivImgGlide);
Glide的这种方式优点是加载显示非常快。而Picasso的方式则因为需要在显示之前重新调整大小而导致一些延迟,Glide比Picasso快,虽然需要更大的空间来缓存。
4,Glide可以加载git,Picasso不能。
总结:
(1)Glide比Picasso加载速度快,但Glide比Picasso需要更大的空间来缓存;
(2)Glide加载图像及磁盘缓存的方式都优于Picasso,且Glide更有利于减少OutOfMemoryError的发生;
(3)Glide可以加载Gif动图,Picasso不可以加载动图
(4)Picasso加载的图片比Glide加载的图片平滑(可忽略不计)
(5)Picasso不支持视频缩略图,Glide支持。
Fresco:
Fresco是facebook开源的图片库。Glide有的功能Fresco都有(都可以加载缩略图,可以加载gif)。
与glide对比:
在加载静态图片的时候三个图片库性能差不多,Glide要稍微优秀一点。在加载动态图的时候(Picasso不支持gif)Glide的java heap是Fresco的一倍,所以OOM的风险比Fresco大很多。但是Fresco占用的native heap要比Glide占用的 native heap要大的多,接近10倍。所以Fresco存在一定的风险,因为他的native heap有些恐怖。
Glide优缺点:
1,多种图片格式的缓存(原图片缓存和其他格式),适用更多的内容表现形式(gif webp 缩略图 video)。Fresco也是只缓存原图片
2,加载速度快(因为缓存的图片规格多),内存开销小(rgb-565)
3,没有文件缓存 java heap比Fresco高
Fresco优缺点:
1,最大的优势在于5.0以下(最低2.3)的bitmap加载。5.0以下系统,Fresco将图片放在一个特别的内存区域,大大减少OOM。
2,适用于高性能加载大量图片。
3,使用比较麻烦,包大。