【发布时间】:2019-01-25 11:18:44
【问题描述】:
我需要使用 Java。图片可以是填充背景色的任意形状,对图片内容没有限制。
编辑#1:要创建的图像的大小是可变的,所以我正在寻找一种有效的方式在内存方面使用,以便在创建图像时免受 Java heap space 异常的影响。
编辑#2:当我尝试使用 Graphics2D 库生成尺寸为 48000x48000 的图像时,我收到了 java.lang.IllegalArgumentException: Dimensions (width=48000 height=48000) are too large 异常,这是生成大尺寸图像所必需的文件大小。
编辑#3:当尺寸变大时,即使我手动配置了执行此操作的 Java 程序的 -Xmx 参数,我也会遇到 java.lang.OutOfMemoryError: Java heap space 异常。
【问题讨论】:
-
我也有一个尺寸标准,这是问题的关键部分。
-
当然,我知道这些参数,但我需要创建各种尺寸的图像。另外,我问最有效的方法创建图像,以防止任何可能的
heap size异常。 -
BufferedImage仍然是您最好的选择,我之前管理过超过 2,000x2,000 像素的尺寸,但您的要求并不明确且广泛。 “最有效的方法”是确保在使用完所有未使用的资源后将其处理掉 -
对于您的编辑 2:宽度 * 高度应小于 Integer.MAX_VALUE。 @stackoverflow.com/questions/9089675/creating-huge-bufferedimage
标签: java file image-processing graphics java-io