In Android, we can get the image from synchronously and asynchronously, but it is more common to see in the later.

Download image synchronously

To download an image from a URL in Kotlin, you can use the URL class and the readBytes function from the kotlin.io library. The URL class represents a uniform resource locator and provides methods for creating and parsing URLs. The readBytes function can be used to read the contents of a file or a stream as a byte array.

Here's an example of how to use the URL and readBytes to download an image from a URL in Kotlin:

import java.net.URL
import kotlin.io.readBytes

fun main() {
    val url = URL("https://www.example.com/image.png")
    val imageData = url.readBytes()
    // TODO: Save the image data to a file or display it in an ImageView
}

In this example, we create a URL object using the URL of the image as a string. We then use the readBytes function to read the contents of the URL as a byte array. The byte array contains the data for the image, which can then be saved to a file or displayed in an ImageView.

Download image asynchronously

To download an image from a URL in Kotlin asynchronously, you can use a coroutine combined with above method. For more

import kotlinx.coroutines.*
import java.net.URL
import kotlin.io.readBytes

fun main() {
    // Create a new coroutine scope
    val scope = CoroutineScope(Dispatchers.Default)

    // Launch a new coroutine in the scope
    scope.launch {
        val url = URL("https://www.example.com/image.png")
        val imageData = url.readBytes()
        // TODO: Save the image data to a file or display it in an ImageView
    }
}

In this example, we create a new coroutine scope using the Dispatchers.Default dispatcher, which runs the coroutine on a shared background thread pool. We then launch a new coroutine in the scope using the launch function. Inside the coroutine, we create a URL object using the URL of the image as a string and use the readBytes function to read the contents of the URL as a byte array. The byte array contains the data for the image, which can then be saved to a file or displayed in an ImageView.