code

Java / ImageIO가 전체 파일을 읽지 않고 이미지 크기를 얻습니까?

codestyles 2020. 11. 27. 08:08
반응형

Java / ImageIO가 전체 파일을 읽지 않고 이미지 크기를 얻습니까?


전체 파일을 읽지 않고 이미지의 크기를 얻을 수있는 방법이 있습니까?

URL url=new URL(<BIG_IMAGE_URL>);
BufferedImage img=ImageIO.read(url);
System.out.println(img.getWidth()+" "+img.getHeight());
img=null;

try(ImageInputStream in = ImageIO.createImageInputStream(resourceFile)){
    final Iterator<ImageReader> readers = ImageIO.getImageReaders(in);
    if (readers.hasNext()) {
        ImageReader reader = readers.next();
        try {
            reader.setInput(in);
            return new Dimension(reader.getWidth(0), reader.getHeight(0));
        } finally {
            reader.dispose();
        }
    }
} 

제안에 대한 sfussenegger에게 감사드립니다.


ImageReader.getHeight (int)ImageReader.getWidth (int)를 사용하면 일반적으로 이미지 헤더 만 읽습니다 (JDK6 소스를보고 있습니다). 따라서 ImageReader 가 최선의 선택 일 가능성이 높습니다.


을 (를) 살펴 봐야합니다 ImageReader.getImageMetadata(). 불행히도 Java Image API는 사용하기가 전혀 쉽지 않습니다.

의 패키지 설명서에서 메타 데이터 형식에 대한 설명을 찾을 수 있습니다 javax.imageio.metadata.

MediaUtil (3 년 전에 마지막으로 업데이트되었지만 저에게 잘 작동 함) 과 같이 사용하기 쉬운 타사 라이브러리가 있습니다 .

참고 URL : https://stackoverflow.com/questions/1559253/java-imageio-getting-image-dimensions-without-reading-the-entire-file

반응형