Получите 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",
)