简体   繁体   English

使用 Jetpack Compose 使用纵横比线圈的图像缩放

[英]Image scale using aspect ratio coil using jetpack compose

I need to display image from uri/filepath, big image 1300x1600 resolution.我需要显示来自 uri/文件路径的图像,大图像 1300x1600 分辨率。 Need to maintain aspect ratio.需要保持纵横比。 i tried with coil but didn't give desirable result, still shows big image.我试过线圈但没有给出理想的结果,仍然显示大图像。 not sure whats wrong here what i tried不确定我试过的有什么问题

val painter =
    rememberAsyncImagePainter(imageUri.value)

Image(
    painter = painter,
    contentScale = ContentScale.Fit,
    contentDescription = null,
    modifier = Modifier
        .padding(16.dp, 0.dp, 16.dp, 0.dp)
        .fillMaxWidth()
        .aspectRatio(painter.intrinsicSize.height / painter.intrinsicSize.width)
)

You are getting size unspecified if one of view width/height is calculated as zero.如果视图宽度/高度之一计算为零,您将获得size unspecified

You can use something like:你可以使用类似的东西:

Image(
    painter = painter,
    contentScale = ContentScale.Fit,
    contentDescription = "contentDescription",
    modifier = Modifier
        .padding(16.dp, 0.dp, 16.dp, 0.dp)
        .fillMaxWidth()
        .then(
            (painter.state as? AsyncImagePainter.State.Success)
                ?.painter
                ?.intrinsicSize
                ?.let { intrinsicSize ->
                    Modifier.aspectRatio(intrinsicSize.width / intrinsicSize.height)
                } ?: Modifier
        )
)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM