【常用 Android 图片处理框架的比较】须知少年凌云志,曾许人间第一流。这篇文章主要讲述常用 Android 图片处理框架的比较相关的知识,希望能为你提供帮助。
Fresco
12,324星星https://github.com/facebook/fresco
FaceBook出品,支持android 2.3 (Gingerbread)及以上尼玛,他竟然有专门的中文文档:https://www.fresco-cn.org/docs/index.html
添加依赖
//添加依赖
compile ‘com.facebook.fresco:fresco:1.2.0‘
//**************下面的依赖需要根据需求添加******************//
// 在 API < 14 上的机器支持 WebP 时,需要添加
compile ‘com.facebook.fresco:animated-base-support:
1.2.0‘// 支持 GIF 动图,需要添加
compile ‘com.facebook.fresco:animated-gif:
1.2.0‘// 支持 WebP (静态图+动图),需要添加
compile ‘com.facebook.fresco:animated-webp:
1.2.0‘compile ‘com.facebook.fresco:webpsupport:
1.2.0‘// 仅支持 WebP 静态图,需要添加
compile ‘com.facebook.fresco:webpsupport:
1.2.0‘
GitHub上的介绍:Fresco is a powerful system for displaying images in Android applications.
Fresco takes care of image loading and display, so you don‘t have to. It will load images from the network, local storage, or local resources, and display a placeholder占位符 until the image has arrived. It has two levels of cache; one in memory and another in internal storage.
In Android 4.x and lower, Fresco puts images in a special region of Android memory. This lets your application run faster - and suffer the dreaded OutOfMemoryError much less often.
Fresco also supports:
- streaming of progressive JPEGs
- display of animated GIFs and WebPs
- extensive广阔的
customization of image loading and display
- and much more!
Fresco 支持许多URI格式,但 Fresco 不支持 相对路径的URI。所有的 URI 都必须是绝对路径,并且带上该 URI 的 scheme。如下:类型 SCHEME 示例远程图片 http:// HttpURLConnection 或者参考 使用其他网络加载方案本地文件 file:// FileInputStreamContentProvider content:// ContentResolverasset目录下的资源 asset:// AssetManagerres目录下的资源 res:// Resources.openRawResourceUri中指定图片数据 data:mime/type; base64 数据类型必须符合 rfc2397规定 (仅支持 UTF-8)
总结
- 优点:支持图像渐进式呈现,大公司出品,后期维护有保障
- 缺点:框架体积较大,3M左右会增大apk的大小;操作方式不是特别简单,有一定学习成本
- 特点:有两级内存一级文件的缓存机制,并且有自己特别的内存区域来处理缓存,避免oom
Glide 14,408星星https://github.com/bumptech/glide
谷歌员工出品,Google推荐的图片加载库,专注于流畅的滚动
添加依赖
repositories {
mavenCentral() // jcenter() works as well because it pulls from Maven Central
}
dependencies {
compile ‘com.github.bumptech.glide:glide:3.7.0‘
compile ‘com.android.support:support-v4:19.1.0‘
}
GitHub上的介绍:
An image loading and caching library for Android focused on smooth scrolling
Glide is a fast and efficient open source media management and image loading framework for Android that wraps media decoding, memory and disk caching, and resource pooling into a simple and easy to use interface.
Glide supports fetching, decoding, and displaying video stills, images, and animated GIFs. Glide includes a flexible API that allows developers to plug in to almost any network stack. By default Glide uses a custom HttpUrlConnection based stack, but also includes utility libraries plug in to Google‘s Volley project or Square‘s OkHttp library instead.
Glide‘s primary首要的 focus is on making scrolling any kind of a list of images as smooth and fast as possible, but Glide is also effective for almost any case where you need to fetch, resize, and display a remote image.
总结
- 优点:加载速度极快,框架体积小,四五百KB
- 缺点:因为机制的选择不同,速度快了,但是图片质量低了,RGB565
- 特点:根据ImageView大小来进行缓存,也就是说一张图片可能根据展示情况来缓存不同尺寸的几份
Picasso 13,035星星https://github.com/square/picasso
Square出品,算是一个出来时间比较长的框架了
添加依赖
compile ‘com.squareup.picasso:picasso:2.5.2‘
GitHub上的介绍就一句话:
A powerful image downloading and caching library for Android
优点:图片质量高缺点:加载速度一般特点:只缓存一个全尺寸的图片,根据需求的大小在压缩转换
Universal-Image-Loader 15,053星星https://github.com/nostra13/Android-Universal-Image-Loader
尼玛,这个虽然最近基本更新了,而且还不提供Gradle的支持,但依然是星星最多的一个图片处理库
jar包下载Powerful and flexible library for loading, caching and displaying images on Android.
优点:丰富的配置选项缺点:最近一次维护在15年底,后期有不维护的趋势,可能被当前图片框架替代特点:三级缓存的策略
总结:如果对图片质量要求不是太高的话,个人推荐Glide,其次推荐Fresco
null
推荐阅读
- 华为 Mate8 Emui 5.0 安卓 7.0 root 记录
- 灰色的博弈(那些靠“方便”赚钱的APP们)
- Appium 002--环境安装(安装Android模拟器)
- Appium 001--环境安装(安装Appium)
- android平台sdk接入的一些坑
- Ceres Solver for android
- Android上HotPatch热修复的安全问题
- Android开始之 数据库存储
- 电商建站费用(建立一个电子商务网站需要多少钱())