【问题标题】:Palette.getDominantColor() return a negative number. RGB packet intPalette.getDominantColor() 返回一个负数。 RGB 数据包整数
【发布时间】:2021-08-31 16:43:45
【问题描述】:

我正在尝试使用 Palette 从位图中选择主要颜色:

val p: Palette = Palette.from(bitmap!!).generate()
Log.d(TAG, "${p.getDominantColor(0)}")

输出是-8341352

reference 返回的值是一个 RGB 数据包 int。那么如何才能得到颜色的真实信息呢?我找不到与七位负整数的 RGB 值的比较

【问题讨论】:

标签: kotlin graphics bitmap rgb androidx


【解决方案1】:

使用颜色实用程序函数将颜色的 RGBA 分量提取为 0-255 范围内的整数。

val argb = p.getDominantColor(0)
val a = Color.alpha(argb)
val r = Color.red(argb)
val g = Color.green(argb)
val b = Color.blue(argb)

如果您使用的是 androidx core-ktx 库(默认项目可能已经存在),您可以通过解构来获取它们:

val (a, r, g, b) = p.getDominantColor(0)

如果您希望将值作为 0..1 范围内的浮点数,您可以将上述值除以 255f,或者如果您的最低 SDK 版本至少为 26,您可以像这样使用解构(注意 A 是最后一个而不是首先在使用 Color 类而不是表示颜色的 Int 时):

val argb = p.getDominantColor(0)
val (r, g, b, a) = Color.valueOf(argb)

【讨论】:

    猜你喜欢
    • 2011-12-14
    • 1970-01-01
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多