【问题标题】:Getting Pixel color values from 8Bit Greyscale image in Android, currently getting values like -16777216 while I want values 0-255从 Android 中的 8 位灰度图像获取像素颜色值,当前获取值如 -16777216 而我想要值 0-255
【发布时间】:2021-06-06 08:26:19
【问题描述】:

我收到一个指向 8 位灰度图像的链接。现在我下载它并像这样解码它

urlLabels = //someurl
val btLabel = BitmapFactory.decodeStream(urlLabels.openStream())

///And I use it like this
 
labelBitmap = labelBt.copy(Bitmap.Config.ARGB_8888, false) // idk what to use as Bitmap.config

labelPixels = IntArray(labelBitmap.width * labelBitmap.height)

labelBitmap.getPixels(labelPixels, 0, labelBitmap.width, 0, 0, labelBitmap.width, labelBitmap.height)

我从此位图获得的值是 -16777216 和类似的值,而我需要它介于 0-255 之间以对应于我从 API 收到的一些值。我才刚刚开始使用颜色和图像,所以我非常困惑。我尝试在线搜索,但 8Bit 灰度配置似乎不是一个东西?但这可能是我误解了一切。基本上我只是想下载图像并能够以正确的 8Bit 形式读取其像素值(值在 0-255 之间)。

编辑:由于我对此非常不熟悉,它可能缺少一些关键信息,因此如有必要,请发表评论并索取比我提供的更多信息。请保持礼貌并保持低调,以便我理解并实施它们,欢迎解释,因为我很想了解正在发生的事情。

【问题讨论】:

    标签: android image-processing bitmap android-bitmap


    【解决方案1】:
    • 16777215 表示 argb(1,1,1,1) => #FFFFFF
    • -16777216 表示 argb(1,0,0,0) => #000000

    #FFFFFF(十六进制)= 16777215(十进制),这是 RGB 的最高数字。

    在 Android 中执行“Color.valueOf(-16777216)”会返回“Color(r:0.0, g:0.0, b:0.0, a:1.0, color_space: sRGB IEC61966- 2.1)",即 BLACK_without_transparency。

    要获得 0 到 255 之间的值,您必须以这种方式拆分颜色:

    red: Color.valueOf(-16777216).red()*255
    green: Color.valueOf(-16777216).green()*255
    blue: Color.valueOf(-16777216).blue()*255
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 2015-06-08
      • 1970-01-01
      • 1970-01-01
      • 2015-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多