매우 큰 해상도의 이미지 ( )를 생성해야하지만 이미지는 비교적 드문 드문하지만 이미지의 일부 영역 만 그릴 필요가 있습니다. 로 예를 들어자바에서 BufferedImage를 작성하십시오.
코드 다음
/* 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 ~ 3백메가바이트입니다.
질문은 처음에는 5GB BufferedImage를 만드는 것을 피할 수 있습니까? 큰 치수의 이미지가 필요하지만 매우 희소 한 색상 정보가 필요합니다.
BufferedImage 용 스트림이있어 메모리가 많이 필요하지 않습니까?
PNG는 DEFLATE 알고리즘을 사용하여 마지막 단계로 압축되므로 'BufferedImage'보다 상당히 작습니다. – Powerlord