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