입력으로 매우 큰 TIFF 이미지가 있다고 가정 해 봅니다. 필자가 준수해야하는 메모리 사양으로 인해이 이미지를 완전히로드 할 수 없습니다. 따라서 다음 옵션은 사용할 수 없습니다 :Java로 타일로 TIFF 파일을 읽는 방법은 무엇입니까?
전체 이미지를 버퍼링하지 않고 이미지의 특정 부분을 읽을 수있는 Java 라이브러리가 있습니까? 또는 스트림에서 TIFF 타일을 얻는 방법은 무엇입니까?
입력으로 매우 큰 TIFF 이미지가 있다고 가정 해 봅니다. 필자가 준수해야하는 메모리 사양으로 인해이 이미지를 완전히로드 할 수 없습니다. 따라서 다음 옵션은 사용할 수 없습니다 :Java로 타일로 TIFF 파일을 읽는 방법은 무엇입니까?
전체 이미지를 버퍼링하지 않고 이미지의 특정 부분을 읽을 수있는 Java 라이브러리가 있습니까? 또는 스트림에서 TIFF 타일을 얻는 방법은 무엇입니까?
가 ImageIO에서이 티파니 당신에게 ImageReader를 제공 할 수 있습니다, 그리고 당신은 readTile를 사용할 수 있습니다 것이 좋습니다. ImageIO에는 여러 개의 getImageReadersBy...
메소드가 있습니다.
tiff가 ImageIO에서 지원되는지는 모르지만 ImageIO는 Java SPI를 사용하므로 ImageReaders 및 ImageWriters를 플러그인 할 수 있습니다.
실제로 이것은 타일로 구성된 ImageReadParam
의 read
에 대한 바로 가기입니다.
타일을 사용한 적이 없지만 이전 답변을 보면이 옵션을 지적하고 싶습니다. @ 윱의 대답을 보완으로
기본 Java 라이브러리에서 구성 요소의 Tiff 파일을 읽을 수있는 방법이 없습니다. 따라서 외부 라이브러리를 사용하거나 자신 만의 라이브러리를 만들면됩니다.
, 당신은 다음과 같은 도움을 찾을 수 있습니다 :
Tiff 파일의 사양은 대단히 복잡하지 않습니다. 나는 그것을 위해 내 자신의 파일 리더를 쓰는 것을 고려할 것이다.
는 읽기 및 TIFF 파일을 구문 분석 signifciantly 확장 된 지원을하고있다처럼 자바 재이 보이는
나는 OP가 이미 JAI 나 그 비슷한 것을 사용하고 있다고 생각 하겠지만, 단지 경우에 .. 당신의 독자를 쓰는 대신에 (좋은 재미이지만 꽤 오랜 시간이 걸립니다.) [mine]을 사용할 수 있습니다 (https://github.com/haraldk/TwelveMonkeys#aldusadobe-tagged-image-file-format-tiff). :-) – haraldK
:
모든 ImageIO에서 ImageReader
구현은 지정된 소스 영역과 ImageReadParam
(ImageReadParam.setSourceRegion(rect)
)를 지원, 당신은 전체 이미지의 특정 영역을 추출 할 수 있도록. 기본 형식이 타일링을 지원하지 않더라도 타일링 된 TIFF (또는 타일을 지원하는 다른 형식)의 타일 크기에 관계없이 모든 판독기에서 작동합니다.
예 : 타일로 이미지 타일 아마 당신은 TIFF 형식을 사용하여, 요구 무엇을 달성 할 수있는 가장 효율적인 방법입니다 읽기 말했다
ImageReader reader = ImageIO.getImageReaders(input).next();
reader.setInput(input);
ImageReadParam param = reader.getDefaultReadParam();
param.setSourceRegion(new Rectangle(x, y, w, h));
BufferedImage aoi = reader.read(0, param);
. :-)
타일을 사용했지만 다른 언어로 API를 직접 인식하지 못했습니다. API를 알고 있다고 생각했습니다 ... 수업에 감사드립니다. – rolfl
@rolfl 안녕하세요, 저는 [JAI] (http://www.oracle.com/technetwork/java/jaifaq-138288.html)를 통해 tiff에 대한 지원이 있는지 여부를 알지 못하므로 링크가 장점이없는 것은 아닙니다. . –