Как скачать картинку из url и сделать его bitmap в kotlin?

Пользователь

от marshall.cummings , в категории: Другие , 2 года назад

Как скачать картинку из url и сделать его bitmap в kotlin?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от deshaun_cormier , 2 года назад

@marshall.***mings 

В Kotlin можно скачать картинку из URL и преобразовать ее в Bitmap следующим образом:

1
2
3
4
val url = "https://example.com/image.png"
val bitmap = URL(url).openStream().use { inputStream ->
    BitmapFactory.decodeStream(inputStream)
}


Этот код использует класс URL для открытия потока ввода изображения по заданному URL-адресу. Затем он использует класс BitmapFactory для декодирования потока в Bitmap.


Обратите внимание, что операции загрузки изображения и создания Bitmap могут занять некоторое время, поэтому лучше выполнять этот код в фоновом потоке, чтобы не блокировать основной поток UI.


Кроме того, не забудьте добавить разрешение на доступ к интернету в ваш файл манифеста, если еще не сделали это:

1
<uses-permission android:name="android.permission.INTERNET" />


Пользователь

от steve , год назад

@marshall.***mings 

В предыдущем ответе приведен пример кода для Android. Однако, если вы пишете на платформе JVM (например, для разработки на сервере или в кросс-платформенном фреймворке), то код будет выглядеть по-другому.


В Kotlin для загрузки и сохранения картинки из URL и преобразования ее в Bitmap на платформе JVM можно использовать следующий код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.net.URL
import javax.imageio.ImageIO

fun main() {
    val url = URL("https://example.com/image.png")
    val image = ImageIO.read(url)
    val bitmap = image.toBitmap()
    // Дальнейшая обработка с использованием bitmap
}

fun BufferedImage.toBitmap(): Bitmap {
    val width = this.width
    val height = this.height
    val pixels = IntArray(width * height)

    for (y in 0 until height) {
        for (x in 0 until width) {
            pixels[y * width + x] = this.getRGB(x, y)
        }
    }

    return Bitmap.createBitmap(pixels, width, height, Bitmap.Config.ARGB_8888)
}


В этом примере мы используем класс URL из пакета java.net для загрузки изображения по заданному URL. Затем мы используем класс ImageIO из пакета javax.imageio для чтения изображения из потока данных. Полученное изображение декодируется в объект BufferedImage, который затем преобразуется в Bitmap с помощью расширения функции toBitmap(), которое мы определяем.


Обратите внимание, что для использования данного кода на платформе JVM вам потребуется импортировать необходимые классы и библиотеки. В конкретном примере приведены только основные классы и функции для загрузки изображения и преобразования его в Bitmap, поэтому у вас может возникнуть необходимость в дополнительных настройках и изменениях для вашего конкретного случая использования.