从1D像素阵列中获取特定像素

时间:2014-07-27 17:33:20

标签: java arrays pixel

我有一个包含多种颜色的像素阵列。

int w = 32;
int h = 32;
int[] pixels = new int[w*h];

如您所见,此示例中的图像尺寸为32x32。所有像素都存储在一维数组中。

现在举例来说,我希望得到坐标(5/0)中的像素,这意味着图像第一行中的第五个元素。现在的问题是我有一维像素阵列。否则我就可以打电话了

int target = pixels[5][0];

如何从一维数组中获取此特定像素?

2 个答案:

答案 0 :(得分:2)

像这样:

public int getPixel(x,y) {
   //W is your width (number of pixels in a row) == 32
   return pixels(x + W*y);
}

这假设像素数据逐行存储在序列中,因此您可以跳过"跳过"到正确的行(即"高度" x(每行的像素数))然后添加列

答案 1 :(得分:0)

它不是大小W*H,因为它们可能不像你想象的那样存储数据。通常,存储这种性质的数据,使得第一行数据存储在第一个W条目中,第二行存储在第二个W中,等等。这会产生一个大小为W*H的数组。因此,要获取有关行X,列Y中某些内容的信息,您必须获取索引为(W * X) + Y的元素

public int getPixel(x,y) {

   return pixels(y + W*X);
}