2016-05-05 3 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 = 2147483647. The document говорит, что данные будут в одном массиве byte, поэтому он превысит лимит.

+0

Есть ли какое-либо обходное решение для создания таких огромных изображений? – FrozenHeart

Смежные вопросы