最近在写一个使用rgb颜色通道的逻辑,需要导出一张1*256的纹理,将每个通道的映射放在纹理上面,除了rgb三个通道之外还需要一个总的通道,这个通道可以用来调节亮度,于是把这个通道的映射放在Bitmap的a值里,坑的事情发生了,我发现使用这张纹理进行颜色查找的时候颜色整体变暗了,说明导出来的这张纹理是有问题的,经过Debug发现,使用Bitmap的setPixel设置的值,用getPixel获得的时候不一定相等,这是因为Bimap默认对颜色做了一个预乘的操作
int colorA, colorB;
Bitmap bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
int colo = 0x00252525;
ArrayList<String> result = new ArrayList<>();
for (int i = 0; i < 256; i+= 8) {
bitmap.setPremultiplied(true);
bitmap.setPixel(0, 0, colo | i << 24);
colorA = bitmap.getPixel(0, 0);
bitmap.setPremultiplied(false);
bitmap.setPixel(0, 0, colo | i << 24);
colorB = bitmap.getPixel(0, 0);
result.add("colorA = " + Integer.toHexString(colorA) + " colorB =