【发布时间】:2017-01-19 05:52:25
【问题描述】:
我正在尝试生成一个非常大(大约十亿像素)的图像,到目前为止,在出现内存不足错误之前,我只能在 BufferedImage 中创建最大约 40 兆像素的图像。我想一块一块地构建图像,然后组合这些块而不将图像加载到内存中。我也可以通过将每个片段写入文件来做到这一点,但 ImageIO 不支持。
【问题讨论】:
-
为什么不增加应用程序的可用内存呢?
-
我做到了,这将我的阈值提高到了 100 兆像素,但我的内存快用完了。另外,我希望我的程序可以扩展到更高的分辨率。这是一个mandelbrot集的分形生成程序。
-
你能用外部工具剪切图像,将碎片与你的程序组合,然后重新组合图像吗?
-
这是一个选项,但如果不强制用户下载外部工具,我将无法分发该程序。
-
如果每个像素包含 R、G、B 和 A 的每个字节,则 40 MPix 图像将消耗 160 Meg 的内存。即使没有 alpha 分量,它也会达到 120 Meg。您是否对 100 Meg 失败的原因有所了解? O_o 至于9000的建议,你可以部署应用程序。使用 Java Web Start 并让它安装外部应用程序。适用于 Mac、*nix 或 Windows。就用户而言,只需在出现提示时单击“确定”即可 - 工具的安装是自动的。
标签: java image memory bufferedimage