非圧縮 TIFF ファイルとして別の場所に書き込む必要がある大きなサイズの CCITT Group 4 圧縮 TIFF ファイルを受け取りました。私はそれを行うためにjai_imageio TIFFリーダーとライターを使用していますが、画像の幅*高さ_の積が整数に収まる限りうまく機能します。
私が使用しているコードは次のとおりです。
TIFFImageReaderSpi readerSpi= new TIFFImageReaderSpi();
ImageReader imageReader = readerSpi.createReaderInstance();
byte[] data = blobManager.getObjectForIdAndVersion(id, version);
ImageInputStream imageInputStream = ImageIO.createImageInputStream(data);
imageReader.setInput(imageInputStream);
TIFFImageWriterSpi writerSpi = new TIFFImageWriterSpi();
ImageWriter imageWriter = writerSpi.createWriterInstance();
ImageWriteParam imageWriteParam = imageWriter.getDefaultWriteParam();
imageWriteParam.setCompressionMode(ImageWriteParam.MODE_DISABLED);
//bufferFile is created in the constructor
ImageOutputStream imageOutputStream = ImageIO.createImageOutputStream(bufferFile);
imageWriter.setOutput(imageOutputStream);
//Now read the bitmap
BufferedImage bufferedImage = imageReader.read(0);
IIOImage iIOImage = new IIOImage(bufferedImage, null, null);
//and write it
imageWriter.write(null, iIOImage, imageWriteParam);
残念ながら、受け取るファイルは非常に大きく、BufferedImage を作成できません。ImageReader から ImageWriter に直接ストリーミングする方法を見つけようとしていますが、その方法がわかりません。提案がある人はいますか?