栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用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);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/507821.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号