Home

Awesome

GlideWebpDecoder

license Maven Central PRs Welcome

GlideWebpDecoder is a Glide integration library for decoding and displaying webp images on Android platforms. It is based on libwebp project and takes some implementation from Fresco and GlideWebpSupport as references.

Features

Dependency Integration

Library is available in MavenCentral. If you build with Gradle, just add the following dependencies to your build.gradle file. Different Glide version is corresponding to different GlideWebpDecoder due to the annotation processor compatibility. The version rule of GlideWebpDecoder is "{major_version}.{glide_version}". For example, if you use glide 4.16.0, the corresponding version of GlideWebpDecoder should be 2.6.4.16.0

Library will only follow the latest three version of Glide. If you use a lower version glide, please clone the project and modify it yourself.

Notice

Since Glide 4.10.0 has migrate to AndroidX, so your project must use AndroidX with Glide 4.10.0+.

WebpDecoder with AndroidX support starts from version 1.6.{GLIDE_VERSION} and won't support glide version below 4.10.0 anymore.

Attention

Since JCenter is being taken down on May 1 2021 and then close their service, so the library has migrate artifacts to Maven Central. See issue #76 for more detail.

Changes:

If your project use old library version below 2.0, you should upgrade the library to the latest 2.0 version.

def GLIDE_VERSION = "4.16.0"
// webpdecoder
implementation "com.github.zjupure:webpdecoder:2.6.${GLIDE_VERSION}"
// glide 4.10.0+
implementation "com.github.bumptech.glide:glide:${GLIDE_VERSION}"
annotationProcessor "com.github.bumptech.glide:compiler:${GLIDE_VERSION}"

Then you are free to use GlideWebpDecoder just like using other Glide integration library.

Usage

Basic usage see Glide API documents

If you want to use BitmapTransformation or library glide-transformations, please use WebpDrawableTransformation to wrap your original BitmapTransformation when loading image with Glide request.

Code Snippet as follow. Run sample project to see other Glide built-in transformation effect.

Transformation<Bitmap> circleCrop = new CircleCrop();
GlideApp.with(mContext)
        .load(url)
        .optionalTransform(circleCrop)
        .optionalTransform(WebpDrawable.class, new WebpDrawableTransformation(circleCrop))
        .into(imageView);

Proguard

The library use native code to decode webp, so you should put the following lines to your proguard.cfg and keep the jni interface.

-keep public class com.bumptech.glide.integration.webp.WebpImage { *; }
-keep public class com.bumptech.glide.integration.webp.WebpFrame { *; }
-keep public class com.bumptech.glide.integration.webp.WebpBitmapFactory { *; }

Acknowledgement

License

The Library is Apache-2.0-licensed, part code is MIT-licensed see Fresco for detail.