- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的程序一张一张地生成 10 x 10 个 3000x3000 像素的图 block 图像(当前保存到 100 个名为 image_x_y.jpg
的文件)
我想将这 100 张图片组合成一张大图片,而不是将所有内容都加载到内存中。我的目标是创建一个 30'000 * 30'000 像素的大图像文件。
我正在寻找一种方法来不使用 JAI(不能从公共(public) maven 存储库安装,我不明白为什么)
有没有办法用纯 java2D 做到这一点?或者是否存在另一个能够处理此问题的库?
我最初的想法是创建一个非常大的缓冲图像,从一个 DataBuffer 备份到磁盘上的一个文件。但我不确定这是否可能。有没有人这样做过?
最佳答案
I want to assemble these 100 images into one big image, without loading everything in memory. My goal is to create one big image file, of 30'000 * 30'000 pixels.
我相信 JAI 中有一个类可以做到这一点。无论您在将 JAI 集成到您的项目中遇到什么问题,我都会坚持这样做,而不是推出您自己的版本。 Java2D 中没有这样的东西。
My original idea was to create a very big buffered image, from a DataBuffer backed to a file on the disk. But i'm not sure that this is possible. Did anybody ever do this ?
是的,我写了一个不完整的实现。它由
ByteBuffer
而不是数组支持的 DataBuffer
(如果缓冲区是直接的,它可以映射到一个文件。)WritableRaster
类似于标准栅格,但使用我的 DataBuffer
实现(JDK 中的标准栅格通过持有对支持数组的引用来作弊。没有在直接 ByteBuffer
的情况下是数组,所以不幸的是你必须重新实现大多数 Raster
方法。)我不建议扩展 SampleModel
,因为您的类将无法使用 JDK 光栅(Java2D 中的各种方法,包括 Raster
工厂方法会打开 SampleModel
假设它是标准模型之一。糟糕的设计恕我直言,但除了遵循相同的模式之外你无能为力。)
关于java - 如何从 java 中的许多图 block 创建大图像文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3412805/
我是一名优秀的程序员,十分优秀!