Java 使用位图getPixels而不是位图getPixel返回不同的结果?

Java 使用位图getPixels而不是位图getPixel返回不同的结果?,java,android,Java,Android,我正在编写一个android应用程序,它使用getPixel读取位图的像素,除了使用了大量的计算能力外,它还能正常工作。 因此,我尝试使用getPixels,并将所有整数保存到整数数组int[]。 它将计算时间减少到三分之一,但最终结果与以前完全不同 我不知道是getPixels以不同的方式返回整数,还是我的代码中缺少了一些东西 旧代码(工作): int bitmapWidth=bitmap.getWidth(); int bitmapHeight=bitmap.getHeight(); 对于(

我正在编写一个android应用程序,它使用
getPixel
读取位图的像素,除了使用了大量的计算能力外,它还能正常工作。 因此,我尝试使用
getPixels
,并将所有整数保存到整数数组
int[]
。 它将计算时间减少到三分之一,但最终结果与以前完全不同

我不知道是
getPixels
以不同的方式返回整数,还是我的代码中缺少了一些东西

旧代码(工作):

int bitmapWidth=bitmap.getWidth();
int bitmapHeight=bitmap.getHeight();
对于(int X=0;X
新代码(不同结果):

int bitmapWidth=bitmap.getWidth();
int bitmapHeight=bitmap.getHeight();
int[]intArray=new int[bitmap.getWidth()*bitmap.getHeight()];
getPixels(intArray,0,bitmap.getWidth(),0,0,bitmap.getWidth(),bitmap.getHeight());
对于(int X=0;X

我知道
intArray[X*Y]
在读取第一行和第一列时会给我
intArray[0]
,但如果这些是唯一受影响的位置,我不会感到困扰。

您的索引错误。您应该使用
y*w+x
而不是
x*y
。因此:

colorValue = Color.red(intArray[X + Y * bitmap.getWidth()]); 

你的索引错了。您应该使用
y*w+x
而不是
x*y
。因此:

colorValue = Color.red(intArray[X + Y * bitmap.getWidth()]); 

你的索引错了。您应该使用
y*w+x
而不是
x*y
。因此:

colorValue = Color.red(intArray[X + Y * bitmap.getWidth()]); 

你的索引错了。您应该使用
y*w+x
而不是
x*y
。因此:

colorValue = Color.red(intArray[X + Y * bitmap.getWidth()]); 

事实上,我刚刚得出了这个结论,我觉得自己太愚蠢了,因为某种原因,我认为x*y实际上是可行的。非常感谢。事实上,我刚刚得出了这个结论,我觉得自己太愚蠢了,因为某种原因,我认为x*y实际上是可行的。非常感谢。事实上,我刚刚得出了这个结论,我觉得自己太愚蠢了,因为某种原因,我认为x*y实际上是可行的。非常感谢。事实上,我刚刚得出了这个结论,我觉得自己太愚蠢了,因为某种原因,我认为x*y实际上是可行的。非常感谢。