Создать PDImageXObject из InputStream - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь создать PDImageXObject из огромного файла JPEG (20 000 x 20 000 пикселей [24-битный цвет])

Методы:

Создает ByteArrayInputStream объект и выделяет более чем1 ГБ ОЗУ, что вызывает исключение

java.lang.OutOfMemoryError: Java heap space
at java.io.ByteArrayOutputStream.<init>(ByteArrayOutputStream.java:77) ~[?:1.8.0_211]

Исключение в строке:

buf = new byte[size];

Я знаю, что число байтов для обработки изображения = W * H * color bits \ 9;

Вот почему я не хочу загружать все байты файла одновременно.

Я пытался установить максимальный размер кучи на -Xmx2G, но этого недостаточно.Я также пытался использовать методы LosslessFactory.createFromImage (...) , JPEGFactory.createFromImage (...) , но у них есть та же проблема

Есть ли способ создать PDImageXObject из InputStream (например, из FileInputStream), не создавая BufferedImage или байтовые массивы?

...