2013-01-02 86 views
2

我:如何將int32Array轉換爲java int []?

int32Array hh = int32Array.frompointer(img.getBufferAsInt32()); 

這導致採取的指針simpleitk圖像數據。任何人都可以幫助我將這種數組類型轉換爲常規的Java數組?

編輯

我嘗試另一種方法在那裏我從itkImage類繼承,並得到了CPTR指針圖像緩衝區只要 我還發現,在Java的內存指針類在那裏我可以從

讓我的數組現在
 com.sun.jna.Pointer ptr = new com.sun.jna.Memory(2 * 512 * 512); 
     // ptr.share(_pointer); 
     int testarr[] = new int[512 * 512]; 
     ptr.read(_pointer, testarr, 0, testarr.length); 

的問題是如何將CPTR指針複製到Java的指針(等於運營商不工作)

+1

顯而易見的事情是循環和轉換每個元素,但這可能非常緩慢。 –

+0

是的@AleksG這就是爲什麼我把像素數據作爲指針,並沒有使用GetPixelValue,因爲我必須循環圖像 –

回答

1

創建一個同樣大小的新數組作爲前一個和類型int,將所有數據從舊舊複製到新舊數據,同時將其轉換爲帶有(int)的整數。

int[] newArray = new int[hh.length]; 

    for(int i=0; i<hh.length; i++){ 
     array[i] = (int)hh[i]; 
    } 
+0

這與我的評論有什麼不同?並且還要注意OP的響應評論。你的回答並不完全有幫助。 –

+0

我嘗試了另一種方法,但我被困在那裏:)我編輯了anwer ..感謝你們的關注 –

+0

通過執行讀取操作,你會複製它的權利? read(long offset,byte [] buf,int index,int length) 將本機指針從本機指針指向的內存複製到指定數組。 它給你什麼樣的錯誤? –