我正在使用JNA。我從我的C++方法獲取原始數據的字節數組。 現在我堅持如何在java中使用這個原始數據字節數組獲取緩衝圖像。 我曾嘗試過很多東西來獲得它作爲tiff圖像,但我力爭取得成功。 這是我到目前爲止的代碼。 這裏我的字節數組包含16位灰度圖像的數據。我從x傳感器設備獲取這些數據。現在我需要從這個字節數組中獲取圖像。從原始數據的字節數組中獲取緩衝圖像
第一次嘗試
byte[] byteArray = myVar1.getByteArray(0, 3318000);//array of raw data
ImageInputStream stream1=ImageIO.createImageInputStream(newByteArrayInputStream(byteArray));
ByteArraySeekableStream stream=new ByteArraySeekableStream(byteArray,0,3318000);
BufferedImage bi = ImageIO.read(stream);
第二次嘗試
SeekableStream stream = new ByteArraySeekableStream(byteArray);
String[] names = ImageCodec.getDecoderNames(stream);
ImageDecoder dec = ImageCodec.createImageDecoder(names[0], stream, null);
//at this line get the error ArrayIndexOutOfBoundsException: 0
RenderedImage im = dec.decodeAsRenderedImage();
我想我在這裏失蹤。 由於我的數組包含原始數據,因此它不包含tiff圖像的標題。 m我對不對? 如果是,那麼如何在字節數組中提供這個頭。並最終如何從這個字節數組中獲取圖像?
測試我從我的本地方法得到正確的字節數組我將這個字節數組存儲爲.raw文件,並在ImageJ軟件中打開這個原始文件後,它播種正確的圖像,所以我的原始數據是正確的。 我唯一需要的是如何轉換我的原始字節數組圖像字節數組?
我能夠通過鏈接 轉換爲圖像的原始字節數組https://forums.oracle.com/forums/thread.jspa?threadID=1261950(我必須將字節偏移量轉換爲{3, 2,1,0},正如論壇中對bandOffset和光柵所建議的那樣 – thakare