ITBOX开发技术科普贴。安卓 metrarl designer

Glide、Picasso、Fresco进阶 - 图像转换

2016-11-17  本文已影响4436人  梦想编织者灬小楠

GlidePicassoFresco已逐渐成为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

下面是小编配合Glide,以Glide Transformations为例,写的一个图像转化的Demo :

GildeTransformation.gif

GitHub地址:https://github.com/sinawangnan/GlideTransformation

Glide Transformations为Glide提供了图像剪裁、模糊、蒙版、色彩过滤等功能。

接下来,小编用另一个简单的事例说明Glide Transformations相关方法的使用~

详解开始(小司机开车了~)

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的同学,小编做下简要说明:

运行下程序,界面大概是这个样子:

image2.png

现在,看起来两张图片是一样的,这是因为我们的转换方法执行后和原图片的显示效果是一样的。

接下来,开始进入正题,我们开始根据类别介绍Glide Transformations提供的图片转换方法:

1.图片剪裁

2.颜色转换

3.模糊处理

PS: 模糊处理是做过兼容的,当API>=18时使用RenderScript,API<18时使用FastBlur。

4.遮罩掩饰(视图叠加处理)

5.GPU过滤(需要依赖GPUImage库)

Picasso Transformations 与 Glide Transformations用法基本一致,可以类比使用。
小编使用Fresco较少,对Fresco Processors就不再添油加醋了,各位可以参照GitHub链接进行学习。

上一篇下一篇

猜你喜欢

热点阅读