차근차근/JAVA JSP

[JAVA] 자바로 사진(JPEG) 메타데이터[사진정보, GPS] 가져오기

예쁜꽃이피었으면 2014. 7. 25. 23:45


metadata-extractor-2.6.4.jar


xmpcore.jar


The import com.drew cannot be resolved

이 에러가 떠서 찾아보던 중에 발견한 블로그~

 

 

 

http://hiake21c.goanygate.com/?p=90 

 

 

자바 1.5 버전에서는 com.sun.image.codec.jpeg.JPEGCode을 지원해서 자바만으로 메타데이터를 가져올수 있었지만

지금 이 글을 작성하는 시점에서 자바는 1.6버젼 업데이트 37을 일반적으로 사용하고 있으며 1.7버젼도 출시되어 사용되고 있다.

아쉽게도 1.5버전의 com.sun.image는 Sun에서 조차도 사용을 권하고 있지않아 1.6에서는 아예 퇴출 당했다.

고로 메타데이터를 1.6버젼이상에서 가져오라면 라이브러리를 적용해야한다.

metadata-extractor-2.6.4
위 라이브러리를 사용해서 메타데이터를 추출하는데 성공했다.
라이브러리를 추가하고 필요한 import
import com.drew.imaging.jpeg.JpegMetadataReader;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
import com.drew.metadata.Tag;
import com.drew.metadata.exif.ExifSubIFDDirectory;
import com.sun.image.*;

메타데이터를 가져오는데 필요한 소스

File file = new File(“파일이 저장된 경로”); //ex ) File file = new File(“c:\\upload\\a.jpg”);

if(“image/jpeg”.equals(contentType)){
Metadata metadata = JpegMetadataReader.readMetadata(file);

for (Directory directory : metadata.getDirectories()) {
for (Tag tag : directory.getTags()) {
System.out.println(tag);
}
}

ExifSubIFDDirectory directory = metadata.getDirectory(ExifSubIFDDirectory.class);
Date date = directory.getDate(ExifSubIFDDirectory.TAG_DATETIME_ORIGINAL);
System.out.println(“PictureDate:::”+date);

System.out.println(contentType + “메타정보 추출 성공”);

}

메타데이터 중에 GPS정보만 추출하기
if(“image/jpeg”.equals(contentType)){
Metadata metadata = JpegMetadataReader.readMetadata(file);
ExifSubIFDDirectory directory = metadata.getDirectory (ExifSubIFDDirectory.class);
Date date = directory.getDate(ExifSubIFDDirectory.TAG_DATETIME_ORIGINAL);

System.out.println(“PictureDate:::”+date);

GpsDirectory gpsDirectory = metadata.getDirectory(GpsDirectory.class);
System.out.println(“TAG_GPS_ALTITUDE :::” + gpsDirectory.TAG_GPS_ALTITUDE);
//System.out.println(“GPS :::” + gpsDirectory.getGeoLocation());
//System.out.println(“GPS :::” + gpsDirectory.getName());
//System.out.println(“TAG_GPS_LATITUDE :::” + gpsDirectory.TAG_GPS_LATITUDE);
//System.out.println(“TAG_GPS_DEST_LATITUDE_REF :::” + gpsDirectory.TAG_GPS_DEST_LATITUDE_REF);
//System.out.println(“TAG_GPS_LATITUDE :::” + gpsDirectory.TAG_GPS_LONGITUDE);
//System.out.println(“TAG_GPS_LONGITUDE_REF :::” + gpsDirectory.TAG_GPS_LONGITUDE_REF);
//(descriptor., descriptor.getGpsLongitudeDescription)

System.out.println(contentType + “메타정보 추출 성공”);

}

라이브러리 홈페이지: http://drewnoakes.com/code/exif/

참고 : http://code.google.com/p/metadata-extractor/wiki/GettingStarted#2._Query_Tag_s

메타정보 표준 가이드 라인 참고

http://www.metadataworkinggroup.com/pdf/mwg_guidance.pdf

http://www.metadataworkinggroup.com/press/pdf/photokina_pr_2008_09_24.pdf

http://www.metadataworkinggroup.com/


반응형