为什么BufferedImage构造函数抛出NegativeArraySizeException异常

时间:2016-05-05 10:50:13

标签: java

为什么以下代码会引发NegativeArraySizeException异常?

new BufferedImage(250 * 100, 250 * 100, BufferedImage.TYPE_4BYTE_ABGR);

输出

Exception in thread "main" java.lang.NegativeArraySizeException
        at java.awt.image.DataBufferByte.<init>(Unknown Source)
        at java.awt.image.Raster.createInterleavedRaster(Unknown Source)
        at java.awt.image.BufferedImage.<init>(Unknown Source)
        at Main.main(Main.java:120)

是否超出了某些内部缓冲区的限制?

1 个答案:

答案 0 :(得分:3)

(250 * 100) * (250 * 100) * 4 = 2500000000,结果大于int的最大值:2 ** 31 - 1 = 2147483647The document表示数据将在单个byte数组中,因此超出了限制。