fix: replace java webp library

the replacement is much faster, especially on page analysis
it's almost as fast as the native library
This commit is contained in:
Gauthier Roebroeck 2021-04-26 17:18:10 +08:00
parent 6069d63049
commit f658f9abe0
3 changed files with 13 additions and 5 deletions

View file

@ -68,9 +68,9 @@ dependencies {
implementation("org.jsoup:jsoup:1.13.1")
implementation("net.coobird:thumbnailator:0.4.13")
runtimeOnly("com.twelvemonkeys.imageio:imageio-jpeg:3.6.4")
runtimeOnly("com.twelvemonkeys.imageio:imageio-tiff:3.6.4")
runtimeOnly(files("$projectDir/libs/webp-imageio-decoder-plugin-0.2.jar"))
runtimeOnly("com.twelvemonkeys.imageio:imageio-jpeg:3.7.0")
runtimeOnly("com.twelvemonkeys.imageio:imageio-tiff:3.7.0")
runtimeOnly("com.twelvemonkeys.imageio:imageio-webp:3.7.0")
implementation("com.github.gotson:webp-imageio:0.2.0")
// support for jpeg2000
runtimeOnly("com.github.jai-imageio:jai-imageio-jpeg2000:1.4.0")

View file

@ -23,8 +23,16 @@ class ImageConverter {
init {
val registry = IIORegistry.getDefaultInstance()
val nativeWebp = registry.getServiceProviderByClass(Class.forName("com.luciad.imageio.webp.WebPImageReaderSpi")) as ImageReaderSpi?
val javaWebp = registry.getServiceProviderByClass(Class.forName("net.sf.javavp8decoder.imageio.WebPImageReaderSpi")) as ImageReaderSpi?
val nativeWebp = try {
registry.getServiceProviderByClass(Class.forName("com.luciad.imageio.webp.WebPImageReaderSpi"))
} catch (e: Exception) {
null
} as ImageReaderSpi?
val javaWebp = try {
registry.getServiceProviderByClass(Class.forName("com.twelvemonkeys.imageio.plugins.webp.WebPImageReaderSpi"))
} catch (e: Exception) {
null
} as ImageReaderSpi?
if (nativeWebp != null) {
if (!WebP.loadNativeLibrary()) {