如何在Jetpack Compose中将彩色图像转换为黑白图像

22

我想在Android Jetpack Compose中使用colorFilter实现将彩色图片显示为黑白图像,该怎么做?

    Image(
        painter = painter, contentDescription = null,
        modifier = Modifier
            .fillMaxSize(),
        contentScale = scale,
        colorFilter = null
    )

2个回答

35

您还可以使用ColorFilter.tint(color = ...)

Image(
        painter = painter, contentDescription = null,
        modifier = Modifier
            .fillMaxSize(),
        contentScale = scale,
        colorFilter = ColorFilter.tint(color = MaterialTheme.colors.onBackground)
    )

1
好的,如果您没有修改默认主题,那么这只会导致灰度处理。 ;) 最好使用 Color.Black 而不是 MaterialTheme.colors.onBackground/MaterialTheme.colorScheme.onBackground - ubuntudroid

18

我们可以通过使用colorMatrix轻松实现这一点:

    val matrix = ColorMatrix()
    matrix.setToSaturation(0F)
    
    Image(
        painter = painter, contentDescription = null,
        modifier = Modifier
            .fillMaxSize(),
        contentScale = scale,
        colorFilter = ColorFilter.colorMatrix(matrix)
    )

1
Android图像颜色变换指南:使用ColorMatrix的小型指南 - molokoka
1
对于上面的另一种语法是 colorFilter = ColorFilter.colorMatrix(ColorMatrix().apply { setToSaturation(0f) }) - kevoroid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接