Je dois créer une image avec une très grande résolution, mais l'image est relativement "clairsemée", seulement certaines zones de l'image doivent dessiner.créer une image buffered clairsemée en Java
Par exemple avec le code suivant
/* 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);
L'image PNG sur la fin que j'ai créé est seulement d'environ 200 ~ 300 Mo.
La question est comment puis-je éviter de créer un 5GB BufferedImage au début? J'ai besoin d'une image de grande dimension, mais avec des informations de couleurs très clairsemées.
Y a-t-il un Stream pour BufferedImage afin qu'il ne prenne pas autant de mémoire?
PNG est compressé en utilisant l'algorithme DEFLATE comme dernière étape de sa création, il n'est donc pas surprenant qu'il soit considérablement plus petit que le 'BufferedImage'. – Powerlord