2

わかりました、これが私たちの問題です:

imageio を使用して、一連の白黒 .tiff ファイルを jpeg2000 .jpf ファイルに変換しようとしています。常に表示可能な .jpf ファイルを取得していますが、通常、指定された数のレイヤーまたはズーム用の分解レベルがありません。

コードは次のとおりです。

 //Get the tiff reader
 Iterator<ImageReader> readerIterator = ImageIO.getImageReadersByFormatName("tiff");
 ImageReader tiffreader = readerIterator.next();

 //make an ImageInputStream from our tiff file and have the tiff reader read it
 ImageInputStream iis = ImageIO.createImageInputStream(itemFile);

 tiffreader.setInput(iis);

 //just pass empty params to the tiff reader
 ImageReadParam tparam;
 tparam = new TIFFImageReadParam();

 IIOImage img = tiffreader.readAll(0, tparam);


 //set up target file
 File f = new File(itemTargetDirectory.getAbsolutePath() + "/" + destFileName);

 //we have tried FILTER_97 as well as different ProgressionTypes and compression settings
 J2KImageWriteParam param;
 param = new J2KImageWriteParam();
 param.setProgressionType("layer");
 param.setFilter(J2KImageWriteParam.FILTER_53);
 //Our problem is that this param is not always respected in the resulting .jpf
 param.setNumDecompositionLevels(5);

 //get the JPEG 2000 writer                             
 Iterator<ImageWriter> writerIterator = ImageIO.getImageWritersByFormatName("JPEG 2000");
 J2KImageWriter jp2kwriter = null;
 jp2kwriter = (J2KImageWriter) writerIterator.next();

 //write the jpf file
 ImageOutputStream ios = ImageIO.createImageOutputStream(f);
 jp2kwriter.setOutput(ios);
 jp2kwriter.write(null, img, param);

同じコードがその後の実行で異なる動作をしたため、これは奇妙な経験でした。どんな洞察も高く評価されます!

4

2 に答える 2