鑑於一個int從DataBuffer中,其具有包裝在其與掩模ARGB數據計算Java中兩個ARGB整數之間差異的最快方法?
A = 0xFF000000 R =爲0xFF0000 G =爲0xFF00 B = 0xFF的
我做以下但不知道是否Java中沒有更快的方法?
DataBuffer db1 = img1.getData().getDataBuffer();
DataBuffer db2 = img2.getData().getDataBuffer();
int x, y;
int totalDiff = 0;
for (int i = 0; i < WIDTH * HEIGHT; ++i) {
x = db1.getElem(i);
y = db2.getElem(i);
totalDiff += Math.abs((x & 0xFF) - (y & 0xFF))
+ Math.abs(((x & 0xFF00) >> 8) - ((y & 0xFF00) >> 8))
+ Math.abs(((x & 0xFF0000) >> 16) - ((y & 0xFF0000) >> 16));
}
應該是什麼0xFF000000'和'0x00FF0000'的'的差異。 – 2011-04-14 10:26:37
沒有區別,上面的代碼忽略A,從x和y中提取單獨的R,G和B分量並獲取差異,然後添加差異的絕對值。因此x的是0xFF010101和y是0xFF020202則差值將是3 – Johnny 2011-04-14 10:32:25
而0xFF010104和0xFF020202之間的差異將是0?只是檢查這是否是故意的。 – 2011-04-14 10:35:43