使用JAI将摆动分量写入大型TIFF图像

使用JAI将摆动分量写入大型TIFF图像,第1张

使用JAI将摆动分量写入大型TIFF图像

我必须使用JAI加载并存储一个大型tiff(59392x40192px)。我的解决方案是:TiledImages。

我使用了TiledImage,因为我需要图块和子图像。为了高效使用TiledImage,您应该使用自己喜欢的图块大小来构建它。JAI使用TileCache,因此不需要时不会将整个Image都存储在内存中。

要将TiledImage写入文件,请使用选项“ writeTiled”(避免OutOfMemory,因为它会逐块写入):

public void storeImage(TiledImage img, String filepath) {    TIFFEnpreParam tep = new TIFFEnpreParam();    //important to avoid OutOfMemory    tep.setTileSize(256, 256);    tep.setWriteTiled(true);    //fast compression    tep.setCompression(TIFFEnpreParam.COMPRESSION_PACKBITS);    //write file    JAI.create("filestore", img, filepath, "TIFF", tep);}

对于最大690mb(压缩)的图像,它可以正常工作,对于尚未测试的较大图像。

但是,如果您使用的是32位WinXP,则可能无法提供1280m HeapSpace大小,这仍然是Java VM的限制。

我的TiledImage是使用我的图像源数据中的IndexedColorModel构建的:

//here you create a ColorModel for your ImageColorModel cm = source.createColorModel();//then create a compatible SampleModel, with the tilesizeSampleModel sm = cm.createCompatibleSampleModel(tileWidth,tileHeight);TiledImage image = new TiledImage(0, 0, imageWidth, imageHeight, 0, 0, sm, cm);


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5500194.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存