我正在尝试从巨大的JPEG文件(20000 x 20000像素[24位彩色])创建PDImageXObject
方法:
创建ByteArrayInputStream
对象并分配超过1GB的RAM,这会导致异常
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(...),但它们有相同的问题
有什么方法可以从InputStream(例如从FileInputStream)创建PDImageXObject,而无需创建BufferedImage或字节数组吗?