存储在 1D 数组中的 2D BufferedImage 颜色?

2D BufferedImage colors stored in 1D array?

BufferedImage 中的 setRGB(int, int, int, int, int[], int, int) 方法使用一维数组表示二维对象(图像的颜色)。这是如何运作的?如何使用 x/y 坐标访问这样的数组(一维数组)?

一维数组包含串联的二维图像行。 以最简单的方式,您可以将像素的偏移量计算为:x + (y * width).

例如图片:

.X.
XXX
X.X

可以存储为

.X.XXXX.X

BufferedImage中其实更难,见javadoc,数组索引计算为offset + (y-startY)*scansize + (x-startX)