我有一个包含多种颜色的像素阵列。
int w = 32;
int h = 32;
int[] pixels = new int[w*h];
如您所见,此示例中的图像尺寸为32x32。所有像素都存储在一维数组中。
现在举例来说,我希望得到坐标(5/0)中的像素,这意味着图像第一行中的第五个元素。现在的问题是我有一维像素阵列。否则我就可以打电话了
int target = pixels[5][0];
如何从一维数组中获取此特定像素?
答案 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);
}