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);
2回目の試行
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画像のヘッダーは含まれていません。miでしょ?はいの場合、このヘッダーをバイト配列で提供する方法。そして最終的にこのバイト配列から画像を取得する方法は?
ネイティブメソッドから適切なバイト配列を取得していることをテストするために、このバイト配列を.rawファイルとして保存し、ImageJソフトウェアでこのrawファイルを開いた後、正しい画像を表示して、rawデータが正しいようにします。私が必要とする唯一のことは、私の生のバイト配列を画像のバイト配列に変換する方法ですか?