DEV Community

Ben
Ben

Posted on • Originally published at needone.app on

Download image from URL in Kotlin

Download image from URL in Kotlin

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
}

Enter fullscreen mode Exit fullscreen mode

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
    }
}

Enter fullscreen mode Exit fullscreen mode

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.

Top comments (0)