Android中Bitmap类getPixel方法获取的像素值为负

        最近在做Android上的图像处理,在Android上直接对像素操作,居然出现了意想不到的事情。Bitmap类getPixel方法获取的像素值全部是负的,本来应该是黑色的,也就是0的,全部变成了-16777216,很是奇怪。但是仔细研究研究这个16777216又比较特殊,因为16777216=256*256*256,刚好是RGB三种颜色分量最大值的乘积。其实这个值的不精确表示,我们很熟悉,手机广告中宣传屏幕的时候经常会说支持1600万色,诺基亚最喜欢这样宣传了。-16777216的补码十六进制表示就是#FF000000,刚好是加了alpha通道的不透明黑色。查了Android 的文档才知道,Android中颜色由四个分量组成,而我想当然的YY成了RGB三个分量,忽略了A这个分量,默认的A值是255。所以无A通道的图像素最高位总是1,而JAVA中又没有无符号整型,返回一个32位的int型变量,就这样出现了我遇到的各种负数。

你可能感兴趣的:(Android)