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