2015-01-26 42 views
0

BufferedImage中的setRGB(int, int, int, int, int[], int, int)方法使用1D数组来表示2D对象(图像的颜色)。这个怎么用?我如何使用x/y坐标访问这样的数组(1D之一)?存储在1D数组中的2D BufferedImage颜色?

+0

阵列是一个单一的系列'宽度'x'高度'长的'int'。你需要做的是用'y * width + x'这样的东西来确定x/y位置所代表的索引。所以如果图像的宽度是20像素,x/y = 0x1 = 20(因为数组是零索引),第二行(y = 2)应该是40 – MadProgrammer 2015-01-26 23:18:10

回答

1

1D数组包含连接的2D图像行。 用最简单的方法可以计算像素的偏移量:x + (y * width)

E.g.图像:

.X. 
XXX 
X.X 

可以将被存储为

.X.XXXX.X 

BufferedImage实际上更难治,见javadoc是,则索引阵列被计算为offset + (y-startY)*scansize + (x-startX)

+0

如何获得像这样的数组的宽度和高度? – ricky3350 2015-01-27 11:47:12

+0

该数组具有'size width * height',但只知道数组的大小,width和height是无法确定的。例如。有大小为15的数组,它可以表示大小为3x5或5x3的图像,并且您无法辨别。您必须将图像尺寸作为附加信息存储在具有图像数据的阵列旁边。 – lopisan 2015-01-28 15:33:48

+0

这很不幸。谢谢,不过。 – ricky3350 2015-01-28 22:39:59