Получите uri изображения и отобразите его с помощью Coil в Compose (Android)

Я пытаюсь получить URI изображения, а затем отобразить его в своем приложении с помощью катушки.

      var imageUri by remember { mutableStateOf<Uri?>(null) }
val launcher =
        rememberLauncherForActivityResult(contract = ActivityResultContracts.GetContent()) { uri: Uri? ->
            imageUri = uri
        }

    Column {
        Button(onClick = {
            //here we are going to add logic for picking image
            launcher.launch(
                "image/*"
            )

        }, content = {
            Text(text = "Select Image From Gallery")
        })
        Log.d(TAG, "ClientCardItem: $imageUri")
        Text(text = imageUri.toString())

Я сделал это, чтобы проверить, получил ли я uri. Я получил такой результат: «content://com.android.providers.media.documents/document/image%3A18», я поместил его в строку.

Это для отображения изображения:

      Image(
    painter = rememberImagePainter(
        data  = Uri.parse(uri)  // or ht
    )
    ,
    contentDescription = "123",
    modifier = Modifier.height(200.dp).width(200.dp),
    contentScale = ContentScale.FillWidth
)

Я знаю, что у меня нет .jpg или .png или чего-то еще, чтобы отобразить его правильно. Мой вопрос в том, как заставить этот формат отображать изображение, которое я выбрал.

РЕДАКТИРОВАТЬ: помнитеAsyncImagePainter, помнитеImagePainter или AsyncImage не найдены?

После того, как я обновился до:

реализация "io.coil-kt:coil:2.2.2"

На AsyncImage() -> Неразрешенная ссылка: AsyncImage

1 ответ

Для отображения изображения просто используйте:

      AsyncImage(model = imageUri, contentDescription = "Picture")

или:

      Image(
    painter = rememberAsyncImagePainter(imageUri),
    contentDescription = "Picture",
)
Другие вопросы по тегам