2013-05-20 5 views
0

바이트 배열 (byte[] imgData)의 이미지 데이터가 있습니다. 나는 그것의 메타 데이터와 같은 좀하고 싶습니다 : 블랙바이트 []에서 이미지 메타 데이터 추출

  • 치수
  • 색상/& 화이트
  • 파일 형식 (JPEG, PNG, ...)
  • ...

어떻게하면됩니까? 내가 알아야 할 도서관이 있다면 알려주세요.

나는 Getting metadata from JPEG in byte array form을 찾았지만 JPEG 이미지와 관련이 있다고합니다. 모든 이미지에 대해이 작업을 수행하려고합니다. 또한, 어떻게 작동하는지 설명하지 않습니다.

+0

질문에 대한 답변을 찾았습니까? – feisal

+0

@feisal 오래된 프로젝트에서 유감입니다. 내가 어떻게했는지 모르겠다. 내 코드 보관소를 살펴보고 찾으려하지만 얼마나 오래 걸릴지 알 수는 없습니다 –

답변

0

불행히도, 생각한 (또는 생각하려고하는) 모든 이미지 형식을 지원하는 것은 실용적이지 않습니다. 단순히 너무 많습니다. 표준 J2SE를 사용하면 ImageIO.getReaderFileSuffixes()에서 얻은 String[]에 반환 된 유형을 처리 할 수 ​​있습니다. this answer에서 볼 수 있습니다.

런타임에 Java 고급 이미징을 추가하면 TIFF를 비롯한 추가 이미지 형식을 지원합니다 (서비스 공급자 인터페이스를 통해).

+0

답변 해 주셔서 감사합니다. 미안하지만 내 질문에 어떻게 대답합니까? 명확히하기 위해, 나는 이제까지 잉태 된 모든 이미지 포맷을 찾고있는 것이 아닙니다. 더 많이 사용 된 것만으로 충분할 것입니다. –

+0

머지 않아, downvote 내게 아니야! –

0
당신이 사용하는 일반 ImageIO에서 할 수

: 당신이 IIOMetadata 조사 할 수 있습니다 고급 속성에 대한

ImageInputStream stream = ImageIO.createImageInputStream(new ByteArrayInputStream(imgData); // assuming imgData is byte[] as in your question 
Iterator<ImageReader> readers = ImageIO.getImageReaders(stream); 
if (!readers.hasNext()) { 
    // We don't know about this format, give up 
} 

ImageReader reader = readers.next(); 
reader.setInput(stream); 

// Now query for the properties you like 

// Dimensions: 
int width = reader.getWidth(0); 
int height = reader.getHeight(0); 

// File format (you can typically use the first element in the array): 
String[] formats = reader.getOriginatingProvider().getFormatNames(); 

// Color model (note that this will return null for most JPEGs, as Java has no YCbCr color model, but at least this should get you going): 
ImageTypeSpecifier type = reader.getRawImageType(0); 
ColorModel cm = type.getColorModel(); 

// ...etc... 

을,하지만 대부분의 시간은 내가 필요하지 않은 것을 발견 (그리고 API는 너무 많은 번거 로움).

Andrew가 언급 한대로 ImageIO.getReaderFileSuffixes()으로 나열된 형식으로 제한됩니다. 특정 형식에 대한 플러그인을 추가해야 할 수도 있습니다.