将RGB值转换为整数像素 - 出现奇数值?

时间:2014-10-08 04:27:11

标签: java colors bitmap rgb

在你说这是一个重复的问题之前,请听我说。我已经查看了其他问题,并且我(大概)使用了正确的方法来获取RGB值并将其存储为整数像素。

我的代码:

// load pixels into an image
    BufferedImage image = new BufferedImage(adjWidth, 
                                            this.height, 
                                            BufferedImage.TYPE_3BYTE_BGR);

    int iwidth = 0;
    int iheight = 0;
    for(int i = 0; i < this.height; i++) {
        for(int j = 0; j < adjWidth - 2; j += 3) {
            int index = adjWidth*i + j;
            int b = iData[index];
            int g = iData[index+1];
            int r = iData[index+2];
            int rgb = ((r&0x0ff)<<16)|((g&0x0ff)<<8)|(b&0x0ff); // merge rgb values to single int
            int red = (rgb>>16)&0x0ff;
            int green =(rgb>>8) &0x0ff;
            int blue = (rgb)    &0x0ff;
            if(rgb != 0) {
                System.out.printf("\nRow: %s\nColumn: %s\nRed: %s\nGreen: %s\nBlue: %s\n", i, j, red, green, blue);
                System.out.println("Color value: " + rgb);
                image.setRGB(iwidth, iheight, rgb);
                iwidth++;
                iheight++;
            }
        }
    }

其中adjWidth是为填充调整的宽度,iData是图像数据的字节数组。 我查看了我的输出,我看到了:

Row: 0
Column: 0
Red: 166
Green: 0
Blue: 0
Color value: 10878976

所以颜色值显然是错误的(当我使用setRGB()时会抛出错误),但为什么这个错了?

0 个答案:

没有答案