2016-05-05 4 views
0

なぜ、次のコードでNegativeArraySizeException例外がスローされるのですか?BufferedImageコンストラクタが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) 

出力は、それはいくつかの内部バッファの制限を超えていますか?

答えて

3

(250 * 100) * (250 * 100) * 4 = 2500000000であり、結果はintの最大値よりも大きい:2 ** 31 - 1 = 2147483647The documentは、データが単一のbyteアレイにあると言います。そのため、制限を超えています。

+0

このような巨大なイメージを作成するための回避策はありますか? – FrozenHeart

関連する問題