mirror of
https://github.com/gotson/komga.git
synced 2025-12-21 16:03:03 +01:00
fix: native webp library
native webp library will be used over java implementation if possible closes #279
This commit is contained in:
parent
11df1e0864
commit
15caea3b99
2 changed files with 23 additions and 4 deletions
|
|
@ -85,6 +85,7 @@ dependencies {
|
|||
runtimeOnly("com.twelvemonkeys.imageio:imageio-jpeg:3.6")
|
||||
runtimeOnly("com.twelvemonkeys.imageio:imageio-tiff:3.6")
|
||||
runtimeOnly(files("$projectDir/libs/webp-imageio-decoder-plugin-0.2.jar"))
|
||||
implementation("org.gotson:webp-imageio:0.2.0")
|
||||
// support for jpeg2000
|
||||
runtimeOnly("com.github.jai-imageio:jai-imageio-jpeg2000:1.3.0")
|
||||
runtimeOnly("org.apache.pdfbox:jbig2-imageio:3.0.3")
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package org.gotson.komga.infrastructure.image
|
||||
|
||||
import com.luciad.imageio.webp.WebP
|
||||
import mu.KotlinLogging
|
||||
import net.coobird.thumbnailator.Thumbnails
|
||||
import org.springframework.stereotype.Service
|
||||
|
|
@ -7,18 +8,35 @@ import java.awt.Color
|
|||
import java.awt.image.BufferedImage
|
||||
import java.io.ByteArrayOutputStream
|
||||
import javax.imageio.ImageIO
|
||||
import javax.imageio.spi.IIORegistry
|
||||
import javax.imageio.spi.ImageReaderSpi
|
||||
|
||||
|
||||
private val logger = KotlinLogging.logger {}
|
||||
|
||||
@Service
|
||||
class ImageConverter {
|
||||
|
||||
val supportedReadFormats = ImageIO.getReaderFormatNames().toList()
|
||||
val supportedReadMediaTypes = ImageIO.getReaderMIMETypes().toList()
|
||||
val supportedWriteFormats = ImageIO.getWriterFormatNames().toList()
|
||||
val supportedWriteMediaTypes = ImageIO.getWriterMIMETypes().toList()
|
||||
val supportedReadFormats by lazy { ImageIO.getReaderFormatNames().toList() }
|
||||
val supportedReadMediaTypes by lazy { ImageIO.getReaderMIMETypes().toList() }
|
||||
val supportedWriteFormats by lazy { ImageIO.getWriterFormatNames().toList() }
|
||||
val supportedWriteMediaTypes by lazy { ImageIO.getWriterMIMETypes().toList() }
|
||||
|
||||
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?
|
||||
|
||||
if (nativeWebp != null) {
|
||||
if (!WebP.loadNativeLibrary()) {
|
||||
logger.warn { "Could not load native WebP library" }
|
||||
registry.deregisterServiceProvider(nativeWebp)
|
||||
} else if (javaWebp != null) {
|
||||
logger.info { "Using native WebP library" }
|
||||
registry.setOrdering(ImageReaderSpi::class.java, nativeWebp, javaWebp)
|
||||
}
|
||||
}
|
||||
|
||||
logger.info { "Supported read formats: $supportedReadFormats" }
|
||||
logger.info { "Supported read mediaTypes: $supportedReadMediaTypes" }
|
||||
logger.info { "Supported write formats: $supportedWriteFormats" }
|
||||
|
|
|
|||
Loading…
Reference in a new issue