이미지의 DQT를 반환하기위한 인터페이스가있는 Java 라이브러리를 찾고 있습니다. 나는 그것을 안다. exiftool은 그것을 할 수 있지만 Java 래퍼는 인터페이스를 가지고 있지는 않습니다. 모든 포인터는 감사하겠습니다. 일부 JNI 바인딩이 나를 위해 잘 작동 할 것입니다.자바에서 jpeg 파일의 양자화 테이블 읽기
미리 감사드립니다.
이미지의 DQT를 반환하기위한 인터페이스가있는 Java 라이브러리를 찾고 있습니다. 나는 그것을 안다. exiftool은 그것을 할 수 있지만 Java 래퍼는 인터페이스를 가지고 있지는 않습니다. 모든 포인터는 감사하겠습니다. 일부 JNI 바인딩이 나를 위해 잘 작동 할 것입니다.자바에서 jpeg 파일의 양자화 테이블 읽기
미리 감사드립니다.
ImageIO의 JPEGImageReader
을 사용하여 IIOMetadata
에서 DQT를 얻을 수 있습니다.
IIOMetadata metadata = jpegReader.getImageMetadata();
IIOMetadataNode root = (IIOMetadataNode) metadata.getAsTree(metadata.getNativeMetadataFormatName());
NodeList dqt = root.getElementsByTagName("dqt");
NodeList dqtables = ((IIOMetadataNode) dqt.item(0)).getElementsByTagName("dqtable");
JPEGQTable[] qTables = new JPEGQTable[dqtables.getLength()];
for (int i = 0; i < dqtables.getLength(); i++) {
qTables[i] = (JPEGQTable) ((IIOMetadataNode) dqtables.item(i)).getUserObject();
System.out.println("qTables: " + qTables[i]);
}
사용 가능한 데이터 및 액세스 방법은 문서 Image Metadata DTD을 참조하십시오.
나는 항상 IIOMetadata
을 알기 쉽고 불편하지만, 작업을 수행합니다 (일부 비 규격 JPEG 파일 제외).
API가 마음에 들지 않으면 JFIF 스트림과 DQT 세그먼트를 직접 구문 분석하는 것이 어렵지 않습니다. an old blog post 및 일부 C 샘플 코드에서 영감을 얻어 JPEGQuality을 작성하여 DQT를 구문 분석하고 JPEG의 품질 설정을 다시 추정하려고합니다.