Glide、Picasso、Fresco已逐渐成为Android主流的图片加载工具(个人见解,使用Volley、ImageLoader、xUtils的大佬们请勿喷~),
在多数Android程序员的印象中,它们只是加载图片和缓存图片的工具,其实它们还有很多强大的功能没有被发掘...
今天,小编向各位介绍一下这些工具的新功能:图像转换
图像转换开源库(附:GitHub链接)
// Glide Transformations https://github.com/wasabeef/glide-transformations // Picasso Transformations https://github.com/wasabeef/picasso-transformations // Fresco Processors https://github.com/wasabeef/fresco-processors
详解开始(小司机开车了~)
1.创建一个Android工程。
2.导入 [Glide Transformations] 库。
dependencies { ...... // Glide compile 'com.github.bumptech.glide:glide:3.7.0' // Glide图形转换工具 compile 'jp.wasabeef:glide-transformations:2.0.1' // GPUImage compile 'jp.co.cyberagent.android.gpuimage:gpuimage-library:1.3.0' }
3.在activity_main.xml添加两个ImageView,一个显示原图片,一个显示转换后的图片。
4.在Activity中使用Glide为两个ImageView加载同一张图片,但第2个ImageView会添加额外的位图转换方法。(举例:加载方法如下)
Glide.with(this) .load(url) .into(mImageView1); Glide.with(this) .load(url) .bitmapTransform(new CropTransformation(this)) .into(mImageView2);
对于没有使用过Glide的同学,小编做下简要说明:
- Glide.with(this) :使用Glide需要一个Context传入。
- Glide.load(url) :加载图片的地址,可以是本地图片资源id、File对象、网络图片地址(别忘记联网权限)等等。
- Glide.into(mImageView1) :加载完图片后需要在哪个ImageView中显示。
- Glide.bitmapTransform(new CropTransformation(this)) :位图转换,也是小编接下来要使用的方法。
1.图片剪裁
CropCircleTransformation (圆形剪裁显示)
使用构造方法 CropCircleTransformation(Context context) Glide.with(this) .load(url) .bitmapTransform(new CropCircleTransformation(this)) .into(mImageView2);
CropSquareTransformation (正方形剪裁)
// 使用构造方法 CropSquareTransformation(Context context) Glide.with(this) .load(url) .bitmapTransform(new CropSquareTransformation(this)) .into(mImageView2);
RoundedCornersTransformation (圆角剪裁)
// 使用构造方法 RoundedCornersTransformation(Context context, int radius, int margin, CornerType cornerType) // radius :圆角半径 // margin :填充边界 // cornerType :边角类型(可以指定4个角中的哪几个角是圆角,哪几个不是) Glide.with(this) .load(url) .bitmapTransform(new RoundedCornersTransformation(this, 100, 0, RoundedCornersTransformation.CornerType.ALL)) .into(mImageView2);
等等其他颜色滤镜的图片设置可以参考 http://www.jianshu.com/p/976c86fa72bc
Picasso Transformations 与 Glide Transformations用法基本一致,可以类比使用。