gpt4 book ai didi

java - 使用位图 getPixels 代替位图 getPixel 返回不同的结果?

转载 作者:行者123 更新时间:2023-12-01 23:25:36 25 4
gpt4 key购买 nike

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

我不知道 getPixels 是否以不同的方式返回整数,或者我是否只是在代码中遗漏了某些内容。

旧代码(工作):

    int bitmapWidth = bitmap.getWidth();
int bitmapHeight = bitmap.getHeight();

for (int X = 0; X < bitmapWidth; X++)
{

for( int Y = 0; Y < bitmapHeight;Y++)
{
colorValue = Color.red(bitmap.getPixel(X,Y));

//Making use of colorValue here

}
}

新代码(不同的结果):

    int bitmapWidth = bitmap.getWidth();
int bitmapHeight = bitmap.getHeight();

int[] intArray = new int[bitmap.getWidth()*bitmap.getHeight()];
bitmap.getPixels(intArray,0,bitmap.getWidth(),0,0,bitmap.getWidth(),bitmap.getHeight());


for (int X = 0; X < bitmapWidth; X++)
{


for( int Y = 0; Y < bitmapHeight;Y++)
{
colorValue = Color.red(intArray[X*Y]);

//Making use of colorValue here

}
}

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

最佳答案

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

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

关于java - 使用位图 getPixels 代替位图 getPixel 返回不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20044016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com