Java에서 큰 이미지 파일을로드하려고하는데 파일이 너무 크면 메모리 오류 메시지가 나타납니다. 이미 명령 줄 플래그로 힙 크기를 늘려 보았습니다.Java에서 큰 이미지를로드하는 방법
BufferedImage img = ImageIO.read(fileToOpen);
그리고 파일이 TIFF 인 경우이 코드를 사용하고 있습니다 : 이미지가이 코드를 사용하여 오전 TIFF 이미지가 아닌 경우
:
나는 다음과 같은 방법으로 이미지를로드하고 :
BufferedImage img = JAI.create("fileload",
fileToOpen.getAbsolutePath()).getAsBufferedImage();
내 질문은 사실이 아래로 비등 : 어떻게 메모리 오류를받지 않고 (예를 들어 포토샵 등의) 이미지 조작 프로그램 수백 메가 바이트의로드 파일?
20MB jpeg가 메모리에로드하기 어려운 이유는 BufferedImage에로드 할 때 예를 들어 이미지를 압축되지 않은 방식으로 저장하기 때문입니다. 따라서 가능한 한 가지 해결책은 Image 클래스를 하위 클래스로 압축하지만 압축 된 형식으로 데이터를 저장하는 Java 클래스를 만드는 것입니다. 그러나 런타임 시스템이 그리는 동안 데이터의 압축을 풀어야하므로 속도 문제가 발생할 수 있습니다. 또 다른 옵션은 원시 압축되지 않은 데이터를 디스크에 캐시하고 거기에서 완벽하게 읽을 수 있지만 속도 문제는 계속됩니다.
큰 소년은 어떻게합니까? Photoshop에서 200MB의 JPEG를 메모리에로드하고 명백한 문제없이 모든 해상도를 그릴 수있는 방법은 무엇입니까?
: 압축되지 않은 RGBA 이미지의
답장을 보내 주셔서 감사합니다. 특히 가속 부분을 설정합니다. 누군가가 더 적절한 (내 경우) 대답이 –
와 함께 제공되는 경우에 대한 정확한 투표 버튼을 예약 오전 대답을 수락하는 의미. 도움이되는 답변을 무료로 투표 할 수 있으며 SO 한도로 인해 이미 투표를 모두 사용하지 않은 경우를 제외하고 모든 답변에 대해 도움을 줄 수 있습니다. 또한 질문을 수정하는 옵션이 있으며 아마도 (또는 다른 사람이)보다 정확한 대답을 제시 할 수 있습니다. – akarnokd
hehe 예 나는 그것을 의미했다. 나는 또한 투표 버튼을 의미했다. 내 대답은 답을 얻지 못한 채로 잠시 더 오래 노출되어 투표가 끝나기를 바란다. 너무 비 윤리적이지 않기를 바랍니다 : P –