使用 java 分割一个大的 geotiff 文件

Split a big geotiff file using java

我有一个很大的 geotiff 文件,我尝试使用 [=23 将其分成小的 png 图片=]语言,我无法将所有图片读取成BuffredImage,所以我只想读取并保存为2张png图片。

我的问题是如何将这个大 geotiff 拆分为 2 个 png 或 jpeg 图像并将主题保存在磁盘上?

使用Java ImageIO,您应该只能将文件的一部分读入内存。如果 TIFF 文件是平铺的,您可以使用 ImageReader.readTile(int, int, int). Otherwise you can use ImageReader.read(int, ImageReadParam) with an ImageReadParam that you have called setSourceRegion on.

读取单个平铺

然而

对这些功能的支持取决于实际的 ImageReader 实现。在这种情况下,Java ImageIO 不提供用于 geotiff 文件的 ImageReader,因此您需要从其他地方获取它。由于 geotiff 是 fully compliant with TIFF 6.0, you can use an ordinary TIFF reader, if you don't need the additional geo data. There is one included in JAI. I also found a full geotiff reader here: GeoTools。不过,我不知道这些 ImageReader 是否支持读取部分图像。

可能没有将非常大的 TIFF 文件拆分成较小文件的纯 Java 解决方案。但是,您可以使用 tiffmakemosaic from LargeTIFFTools 之类的实用程序来分割图像。该实用程序带有将拆分图像转换为 JPEG 格式的内置功能。

如果您需要 PNG 格式的图像,您可以使用例如this thread.

中建议的 ImageIO 库