2
(我上週在SO上做了三篇有關我正在開發的Java項目的帖子,我感到內疚,但是到底什麼是你的答案,真是令人驚歎。)使用字節訪問位圖內存信息
這裏的代碼在C#中的程序塊
Bitmap bitmap = ...
int dstStride = bitmap.Stride;
byte* bdst = (byte*)bitmap.Scan0;
我想在Java中的等效算法。我開始認爲這是不可能的,基於other, similar questions。
我實際上可以複製我的位圖的步幅信息,但當然,byte*
幾乎不可能重現。什麼後來發生的情況是,有一個for
循環操縱位圖圖像,一拉:
bdst[x * 3 + y * dstStride + 2] = (byte)(alpha * bsrc[dx * 3 + L * srcStride + 2]);
(X & y是一個循環迭代器)
當然我不能簡單地做BDST一個字節因爲這沒有意義。 According to this totally awesome article,Scan0是「[在固定數據陣列的存儲器中的地址]」。
並且由上面的SO帖子判斷,這在Java中是不可能的。確認/拒絕?
不知道爲什麼你不能把bdst當成一個字節數組?這正是它的原因。 C#位圖類是本地位圖對象的包裝,它明顯將內部圖像數據表示爲指向第一個內存位置的指針。 – VinayC 2010-11-10 05:39:38