我正在尝试修改我从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范围内每个像素的值。
请帮我解决这个问题。谢谢
答案 0 :(得分:1)
由于所有红色,蓝色和绿色组件的最大值都可以达到255,因此您无法将它们相加以获得单一颜色值(例如,1 + 2 + 3 = 2 + 3 + 1) / p>
您必须使用方法
将颜色值存储在大于255的数字中color = redValue*2^16 + greenValue*2^8 + blueValue
您应该能够弄清楚如何从这个独特的值
中检索红色蓝色和绿色 祝你好运