当前位置: 首页 > 知识库问答 >
问题:

Android BitmapFactory从ARGB png修剪颜色值

笪健
2023-03-14

我有一个包含alpha值的图像。一些像素的透明度为0,这意味着它们是完全透明的,其他像素的透明度介于0到255之间。尽管像素的透明度为0,但它仍然包含我希望使用位图访问的有效RGB值。getPixel(x,y)方法。

问题:加载位图丢失所有RGB值(它们被设置为0),其中alpha(A)值为0。

这是我加载位图的方式:

val options = BitmapFactory.Options().apply {
    inPreferredConfig = Bitmap.Config.ARGB_8888
}
originalImage = BitmapFactory.decodeResource(context.resources, R.drawable.img, options)
originalImage.setHasAlpha(true)

如果我在Gimp等程序中打开相同的图像,并在同一像素上使用颜色选择器,即使在α为0的像素中,我也会得到所有有效的RGB值。

只有透明度为0的像素受到影响,其他像素保留其RGB值。

是什么原因造成的,以及如何解决?

共有1个答案

云宾鸿
2023-03-14

由于默认情况下Android系统内部将位图图像处理为预乘位图,因此所有像素(以非预乘格式存储在文件中)在解码时都被转换为预乘像素。因此,当A为0时,RGB值将变为0。如果您想保持位图为非预乘格式,只需指定BitmapFactory。Options.inPremultiplated=false。

val options = BitmapFactory.Options().apply {
    inPreferredConfig = Bitmap.Config.ARGB_8888
    inPremultiplied = false
}

originalImage = BitmapFactory.decodeResource(context.resources, R.drawable.img, options)
originalImage.setHasAlpha(true)
 类似资料:
  • 我很困惑,无法改变我的android studio IDE的颜色,我如何面对非常困难的代码在这种类型的设置。

  • 问题内容: 如何在Django中charField的末尾去除空格(trim)? 这是我的模型,如您所见,我已经尝试过使用干净的方法,但是这些方法永远不会运行。 我也尝试过这样做,但是这些也不起作用。 有没有办法强制为我自动修剪charField? 谢谢。 编辑:将代码更新为我的最新版本。我不确定我在做什么错,因为它仍然没有剥离空白(修剪)名称字段。 问题答案: 必须调用模型清洗(这不是自动的),因

  • 我正在使用Visual Studio Code进行编码,但最近我遇到了奇怪的问题,该如何解决? 当我输入php artisan tinker时,tinker文本不像往常一样,我记得颜色是蓝色的,但现在是白色的。同样在使用php artisan migrate和etc命令后,结果文本是白色的 我卸载了Vscode以及所有appdata和扩展以及与之相关的任何东西,但在安装最新版本后没有任何变化,修补

  • 我的数据库中有各种对象,由唯一的。当我显示它们时,我希望它们中的每一个都有基于其 guid 的独特颜色。 所以我想要这样的东西: 哪里 最好的方法是什么? 显然,唯一的guid比颜色多得多,所以不可能每个guid都有自己唯一的颜色。我只是想找一个好的品种。

  • 原文:Specifying Colors 在 matplotlib 的几乎所有地方,用户都可以指定颜色,它可以以如下形式提供: RGB 或者 RGBA 浮点值元组,[0, 1]之间,例如(0.1, 0.2, 0.5)或者(0.1, 0.2, 0.5, 0.3)。 RGB 或者 RGBA 十六进制字符串,例如#0F0F0F或者#0F0F0F0F。 [0, 1]之间的浮点值的字符串表示,用于表示灰度,

  • 图表颜色主要是由主题来确定的,通过切换系统主题或自定义主题,可以对应修改图表颜色。 (单图表颜色修改) (图册中图表颜色修改) 图表秀图册中的图表颜色是由图册主题确定的,这样可以有效保证图册中多个图表颜色的协调一致,提升图册美感。因此,通过修改图册主题就可以达到修改图表颜色的目的。 图表秀的主题分为系统主题和自定义主题。 系统主题是由图表秀官方提供的主题颜色,直接选择即可使用。 自定义主题是由用户