我有一个很大的 geotiff 文件,我尝试将其分成小的 png 图像,使用 Java 语言,我无法阅读所有图片进入 BuffredImage ,所以我只想阅读并保存为2张图片。
我的问题是如何将这个大地理分割为2个png或jpeg图像并将主题保存在磁盘上?
答案 0 :(得分:1)
使用Java ImageIO,您应该只能将文件的一部分读入内存。如果平铺TIFF文件,您可以使用ImageReader.readTile(int, int, int)读取单个图块。否则,您可以将ImageReader.read(int, ImageReadParam)与您调用setSourceRegion的ImageReadParam一起使用。
对这些功能的支持取决于实际的ImageReader实现。在这种情况下,Java ImageIO不提供用于geotiff文件的ImageReader,因此您需要在其他地方获取它。由于geotiff为fully compliant且TIFF为6.0,因此如果您不需要其他地理数据,则可以使用普通的TIFF阅读器。有一个included in JAI。我还在这里找到了一个完整的geotiff阅读器:GeoTools。我不知道这些ImageReader是否支持读取部分图像。
答案 1 :(得分:1)
可能没有纯Java解决方案可以将非常大的TIFF文件拆分成较小的TIFF文件。但是,您可以使用tiffmakemosaic
中的LargeTIFFTools实用程序来分割图像。该实用程序具有内置功能,可将分割图像转换为JPEG格式。
如果您需要将图片作为PNG,则可以使用例如this thread中建议的ImageIO库。