Android應用中對webp格式圖片的處理

1、爲何用webp格式
webp格式能夠將圖片儘可能小得壓縮,這個在移動應用中使用很廣,且技術較成熟。java

2、編譯動態庫包
編譯的動態庫包的源碼參照GitHub地址請添加連接描述android

個人環境
Android Studio3.0.1
gradle 3.3
jdk 1.8.0_101
ndk-build android-ndk-r10e-windows-x86_64git

導入Android Studio,
注意Application.mk中的配置,APP_ABI配置是指須要生成哪些環境下的so包,個人環境起初添加了armeabi好像是有問題的,armeabi如今用的愈來愈少,我給去掉了。
Android應用中對webp格式圖片的處理github

Terminal中cd到jni路徑執行命令以下:
ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk NDK_APPLICATION_MK=./Application.mkweb

Android應用中對webp格式圖片的處理

運行完成後會在jni目錄下自動生成libs文件夾,生成動態庫包如圖:
Android應用中對webp格式圖片的處理windows

此時動態庫包就打好了,而後就是如何調用so包了,
在app目錄下加入so包,
Android應用中對webp格式圖片的處理
在咱們本身須要引用的工程中build.gradle中加入配置 android.sourceSets數組

sourceSets {
        main {
                jniLibs.srcDirs = ['libs']//設置目標的so存放路徑
        }
}

而後加入WebPDecoder.java,這裏注意這個文件的路徑必定要按照編譯時的路徑me.everything.webp.WebPDecoder。
固然若是須要也能夠更改,不過要連編譯時webp.c中的路徑一併更改
Android應用中對webp格式圖片的處理app

3、使用動態庫包展現webp
最後就是調用了,bytes是webp格式的bytes數組形式ide

ImageView iv = findViewById( R.id.imageView );
Bitmap webpBitmap = WebPDecoder.getInstance().decodeWebP(bytes);
        iv.setImageBitmap(webpBitmap);
相關文章
相關標籤/搜索