Search code examples
kotlinandroid-jetpack-composecompose-desktop

How to load image in Kotlin Compose desktop?


How to load images from the hard disk when using Kotlin compose on the desktop?


Solution

  • You can get ImageAsset with this function

    fun imageFromFile(file: File): ImageAsset {
        return org.jetbrains.skia.Image.makeFromEncoded(file.readBytes()).asImageAsset()
    }
    

    Full example:

    import androidx.compose.desktop.Window
    import androidx.compose.foundation.Image
    import androidx.compose.runtime.remember
    import androidx.compose.ui.graphics.ImageAsset
    import androidx.compose.ui.graphics.asImageAsset
    import java.io.File
    
    fun main() = Window {
       val file = File("D:\\images\\my_image.PNG")
       val image = remember { imageFromFile(file) }
    
       Image(asset = image)
    }
    
    fun imageFromFile(file: File): ImageAsset {
       return org.jetbrains.skia.Image.makeFromEncoded(file.readBytes()).asImageAsset()
    }