【发布时间】:2019-09-28 21:21:11
【问题描述】:
我正在尝试加载几千张小图像进行处理并将它们显示为更大的地图。图像的总文件大小为 130MiB,但是当我运行该程序时,它使用了我所有的 RAM,并且由于 RAM 使用量超过 2GiB,我什至得到了OutOfMemoryError。
与文件大小相比,导致内存使用量超过 10 倍的原因是什么,我有什么办法可以缓解这种情况?
编辑:
示例代码
ArrayList<PImage> images = new ArrayList<PImage>();
void setup() {
for (int i = 0; i < 2000 /*num of images*/; i++) {
images.add(loadImage(Integer.toString(i) + ".jpg");
}
}
//in reality, never gets here
void draw() {
for (PImage i: images) {
image(i, /*precalculated x and y*/ random(500), random(500));
}
}
【问题讨论】:
-
@KevinWorkman 好的,现在添加一个
-
这可能是黑魔法,没有密码谁知道。
-
JPEG 压缩比是 10:1,这样就可以解释:图像在磁盘上被压缩,但是当加载到您的程序并解压缩时,您会得到 10 倍的大小。
-
@jbx 添加了一个例子
标签: java image memory processing