之前以为getPixels和copyPixelsToBuffer的差别在于int和byte,但实际上copyPixelsToBuffer获取的数据中的rgb分量是经过alpha处理,以下面代码举例
Bitmap bitmap8 = Bitmap.createBitmap(1,1, Bitmap.Config.ARGB_8888);
Canvas canvas2 =new Canvas(bitmap8);
canvas2.drawColor(0x80123456);
bitmap.getPixels获取的数据如下:
pixls8 :80123456
bitmap.copyPixelsToBuffer获取数据如下:
bp8 :09 1A 2B 80
可以看到copyPixelsToBuffer的数据是上面值的一半,如09(十进制9)对应12(十进制18),1A(十进制26)对应34(十进制52),2B(十进制43)对应56(十进制86),这是因为alpha通道的值为0x80(128),128/255=0.5
网友评论