Darwin Compose load image from remote url

이태훈·2022년 7월 8일
0

Darwin Compose

목록 보기
3/4

Jetbrains Compose에서 Darwin OS에 뷰를 그릴 때 remote url로부터 image를 load하는 것을 해보겠습니다.

먼저 각 모듈에 Ktor Http Client를 설정해줍니다.

//commonMain
expect val httpClient: HttpClient

//androidMain
actual val httpClient: HttpClient = HttpClient(OkHttp)

//iosMain
actual val httpClient: HttpClient = HttpClient(Darwin)

그런 다음 image url로 부터 byteArray를 받은 다음 이미지로 변환해줍니다.

아래는 예시 코드입니다.

@Composable
fun ImageContent() {
	val bitmap by produceState<ImageBitmap?>(null) {
		val image = httpClient.use {
			it.get("https://picsum.photos/200/300")
				.body<ByteArray>()
		}

		value = org.jetbrains.skia.Image.makeFromEncoded(image).toComposeImageBitmap()
	}

	bitmap?.let {
		Image(
			bitmap = it, contentDescription = null
		)
	}
}
profile
https://www.linkedin.com/in/%ED%83%9C%ED%9B%88-%EC%9D%B4-7b9563237

0개의 댓글