为什么Android位图像素颜色不保持二进制相同?

为什么Android位图像素颜色不保持二进制相同?,android,kotlin,bitmap,Android,Kotlin,Bitmap,我在Android(Kotlin)中,我创建了一个位图,设置了一个像素,然后立即得到像素,但是我得到的值并不总是等于我设置的值。很接近,但不完全相同。为什么? val conf = Bitmap.Config.ARGB_8888 val w = 2 val h = 2 val bitmap = Bitmap.createBitmap(w, h, conf) var inColor = 0x11223344 bitmap.setPixel(0, 0, inColor) var outColor

我在Android(Kotlin)中,我创建了一个位图,设置了一个像素,然后立即得到像素,但是我得到的值并不总是等于我设置的值。很接近,但不完全相同。为什么?

val conf = Bitmap.Config.ARGB_8888
val w = 2
val h = 2
val bitmap = Bitmap.createBitmap(w, h, conf)
var inColor = 0x11223344 
bitmap.setPixel(0, 0, inColor)
var outColor = bitmap.getPixel(0, 0) // comes out as 0x111e2d4b
设置:
0x11223344

获取:
0x111e2d4b

但有些值无法转换:

设置:
0x10203040

获取:
0x10203040


发生了什么事?为什么Iget的值与Iset的值不一样?

问题在于android正在以预乘格式存储位图。您可以使用
bitmap.isPremultiplied=false
将其关闭。看见