2015-01-26 41 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