Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用getRGB在java中获取图像的像素值数组_Java_Pixels - Fatal编程技术网

如何使用getRGB在java中获取图像的像素值数组

如何使用getRGB在java中获取图像的像素值数组,java,pixels,Java,Pixels,我不熟悉java中的图像处理。实际上,我想做的是将图像的所有像素值保存到一个数组rgbArray[],问题是我在一个数组的所有索引中得到相同的值,即数组的所有索引都有相同的值。代码的一部分如下所示: int[] rgbArray=new int[w*h]; // Array to store the Pixel values BufferedImage buffer = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); buffe

我不熟悉java中的图像处理。实际上,我想做的是将图像的所有像素值保存到一个数组
rgbArray[]
,问题是我在一个数组的所有索引中得到相同的值,即数组的所有索引都有相同的值。代码的一部分如下所示:

int[] rgbArray=new int[w*h];     // Array to store the Pixel values
BufferedImage buffer = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); 
buffer.getRGB(0, 0, w, h, rgbArray, 0, w );
for(int i=0;i<w*h;i++)
 {
  System.out.println("rgbArray["+i+"] = "+ rgbArray[i]);
 }
int[]rgbArray=newint[w*h];//数组来存储像素值
BuffereImage buffer=新的BuffereImage(w,h,BuffereImage.TYPE_INT_RGB);
getRGB(0,0,w,h,rgbArray,0,w);

对于(int i=0;i由于您没有为BuffereImage提供任何值,因此每个像素默认为alpha=255、红色=0、绿色=0和蓝色=0;将所有这些值都放入1 int,则得到-16777216。我是从以下方面得到的:

int val = buffer.getRGB(5, 23);
int a = (0xff000000 & val) >>> 24;
int r = (0x00ff0000 & val) >> 16;
int g = (0x0000ff00 & val) >> 8;
int b = (0x000000ff & val);
System.out.println("a " + a + " r " + r + " g " + g + " b " + b);

这将产生一个255 r 0 g 0 b 0。

因为您没有为BuffereImage提供任何值,所以每个像素默认为alpha=255、红色=0、绿色=0和蓝色=0;将所有这些值都转换为1 int,则得到-16777216。我是从以下方面得到的:

int val = buffer.getRGB(5, 23);
int a = (0xff000000 & val) >>> 24;
int r = (0x00ff0000 & val) >> 16;
int g = (0x0000ff00 & val) >> 8;
int b = (0x000000ff & val);
System.out.println("a " + a + " r " + r + " g " + g + " b " + b);

这将生成一个255 r 0 g 0 b 0。

我看不到在缓冲图像中放置图像的任何位置。这样创建的图像是完全空的,因此值都是相同的,以获得帮助,但您能否指导我如何将图像放置在缓冲图像中,以及缺少哪部分代码?Thax我得到了它。我没有将值提供给buff我需要更多的帮助,因为我正在编写图像处理软件我看不到在缓冲图像中放置图像的任何位置。像这样创建的,它是完全空的,所以值都是相同的。但是你能指导我如何在缓冲图像中放置图像,以及缺少哪部分代码吗?Thax我得到了它。。我没有给缓冲图像赋值…thax alot:)Bt我需要更多的帮助,因为我正在编写图像处理软件:)谢谢你的帮助。。是的,你是对的,我得到的值和你上面写的一样。。你能告诉我如何把一个图像放在缓冲图像中,哪个部分的代码丢失了吗。。我没有给缓冲图像赋值…thax alot:)Bt我需要更多的帮助,因为我正在编写图像处理软件:)谢谢你的帮助。。是的,你是对的,我得到的值和你上面写的一样。。你能告诉我如何把一个图像放在缓冲图像中,哪个部分的代码丢失了吗。。我没有给缓冲图像赋值…thax alot:)Bt我需要更多的帮助,因为我正在编写图像处理软件:)