如何在android中获取0-255范围内图像的像素值

时间:2014-03-12 06:43:21

标签: java android image image-processing

我正在尝试修改我从android中的库中获取它的图像。为了修改,我需要获取图像的像素值。

我不想将像素值区分为R,G,B值。我想将像素值作为单个值

                              for (x = 0; x < w; x++){
                for (y = 0;y < w; y++){
                int pixels = bmpimg1.getPixel(x, y);
                int alphavalue=Color.alpha(pixels);
                int redValue = Color.red(pixels);
                int blueValue = Color.blue(pixels);
                int greenValue = Color.green(pixels);
                 totalvalue[x][y]=(redvalue+bluevalue+greenvalue)/3
                         }
                         }

// totalvalue =假设添加redvalue,bluevalue,greenvalue和取平均值会得到该位置的像素值//

当我尝试使用totalvalue重新创建图像时,我没有得到我给它作为输入的图像。

我在使用Raster.getpixels的java中做了同样的事情,当我尝试创建相同的图像时,我能够获得相同的图像。

              Bufferedimage img=ImageIO.read(new File("a.jpg");
              Raster raster=img.getData();
              for (int x=0;x<w;x++)
        {
            for(int y=0;y<h;y++)
            {
                pixels[x][y]=raster.getSample(x,y,0);
                pixel[count++]=pixels[x][y];
            }
        }

当我使用带有像素[x] [y]的bufferedImage创建一个新图像时,我得到了原始图像

但是在android中,getpixel给出了负数值

那么如何在不分成RGB值的情况下获得0-255范围内每个像素的值。

请帮我解决这个问题。谢谢

1 个答案:

答案 0 :(得分:1)

由于所有红色,蓝色和绿色组件的最大值都可以达到255,因此您无法将它们相加以获得单一颜色值(例如,1 + 2 + 3 = 2 + 3 + 1) / p>

您必须使用方法

将颜色值存储在大于255的数字中
color = redValue*2^16 + greenValue*2^8 + blueValue

您应该能够弄清楚如何从这个独特的值

中检索红色蓝色和绿色 祝你好运