代码之家  ›  专栏  ›  技术社区  ›  Laurent K

如何在java中从多个tile创建一个大图像文件?

  •  7
  • Laurent K  · 技术社区  · 14 年前

    我的程序产生10 x 10瓦片图像3000x3000像素,一个接一个(目前保存到100个名为 image_x_y.jpg )

    我想把这100张图片组装成一张大图片,而不需要把所有的东西都载入内存。我的目标是创建一个3万*3万像素的大图像文件。

    没有 使用JAI(不能从公共maven存储库安装,我不明白为什么)

    我最初的想法是创建一个非常大的缓冲映像,从备份到磁盘上的文件的数据缓冲区。但我不确定这是否可行。有人这样做过吗?

    3 回复  |  直到 14 年前
        1
  •  6
  •   finnw    14 年前

    我想把这100张图片组装成一张大图片,而不需要把所有的东西都载入内存。我的目标是创建一个3万*3万像素的大图像文件。

    我相信在耆那有一个班是这样做的。无论您在将JAI集成到项目中时遇到什么问题,我都会坚持下去,而不是推出自己的版本。Java2D中没有这样的东西。

    我最初的想法是创建一个非常大的缓冲映像,从备份到磁盘上的文件的数据缓冲区。但我不确定这是否可行。有人这样做过吗?

    是的,我写了一个不完整的实现。它包括

    • A DataBuffer 这是由一个 ByteBuffer
    • A WritableRaster 数据缓冲器 ByteBuffer公司 所以不幸的是,你必须重新实现大多数 Raster

    我不建议延长 SampleModel 因为您的类不能与JDK rasters(Java2D中的各种方法,包括 光栅 样品模型 假设它是标准的。糟糕的设计,但除了遵循同样的模式,你没法做太多。)

        2
  •  1
  •   Denis Tulskiy    14 年前

        3
  •  1
  •   extraneon    14 年前

    如果您在使用公共maven存储库中的资源时遇到问题,您可能需要使用它 Nexus

    不要在你周围摆弄这个,成像问题是复杂的,因为所有涉及压缩和处理磁盘上的BMP是,鉴于你的图像大小(约100*30MB=3GB)可能不是最佳或快速。