Мне нужно создать изображение с очень большим разрешением,
но изображение относительно "разреженное", только некоторые области изображения должны быть нарисованы.
Например, со следующим кодом
/* this take 5GB memory */
final BufferedImage img = new BufferedImage( 36000, 36000, BufferedImage.TYPE_INT_ARGB);
/* draw something */
Graphics g = img.getGraphics();
g.drawImage(....);
/* output as PNG */
final File out = new File("out.png");
ImageIO.write(img, "png", out);
Размер PNG-изображения на конце, который я создал, составляет около 200 ~ 300 МБ.
Вопрос в том,
как можно избежать создания 5GB BufferedImage в начале?
Мне нужно изображение большого размера, но с очень редкой информацией о цвете.
Есть ли поток для BufferedImage, чтобы он не занимал так много памяти?