我正在开发一个绘画应用程序,用户可以创建他们想要的任何大小的图像。我正在使用BufferedImage进行绘制,然后将该图像绘制到JPanel上。但是,当我尝试制作一个12000 x 12000的图像时,会出现内存不足错误。我认为我正在接近这个问题,因为其他应用程序,如Photoshop和Paint.net已经设法做到了。关于在Java中使用大图像的逻辑应该有什么提示?
修改 这是我在程序中允许的最大大小。但是,如果我运行它,由于内存不足,我仍然会收到错误。所以我猜它不可能将所有这些存储在一个图像中?
public class BigImage {
public static void main(String[] args) {
BufferedImage image = new BufferedImage(400 * 256, 400 * 256, BufferedImage.TYPE_INT_RGB);
}
}
答案 0 :(得分:0)
BufferedImage基本上是一维数组,在Java中你不能分配大于int的东西,所以你可以拥有的最大值是:
int[] array = new int[Integer.MAX_VALUE] ;
如果你确实需要更大的东西,你必须自己使用不安全类。 See an example in this library