2011-08-22 16 views
5

Szukam wyciągnąć informacje związane z kamerą z jpg przy użyciu Java. Rozejrzałem się, ale nie byłem w stanie znaleźć rozwiązania mojego problemu. Eksportuję moje zdjęcia z Aperture na moim Macu (OS X 10.7) i chcę korzystać z danych z Aperture, które są dostępne w informacji o pliku.W języku java, w jaki sposób mogę wyodrębnić informacje związane z kamerą z obrazu?

Wszelkie pomysły?

Szukam wymiarów i słów kluczowych wyodrębnionych ze zdjęć takich jak ten: 80.167.88.49/masters/test.html. Obecnie otrzymuję wyjątek podczas próby użycia ekstraktora metadanych. Nie wiem, czy Aperture dodaje informacje, których nie można obsłużyć, ale rzuca wyjątek na wszystkie zdjęcia z Aperture.

Exception in thread "main" java.lang.NoClassDefFoundError: com/adobe/xmp/XMPException 
    at com.drew.imaging.jpeg.JpegMetadataReader.extractMetadataFromJpegSegmentReader(Unknown Source) 
    at com.drew.imaging.jpeg.JpegMetadataReader.readMetadata(Unknown Source) 
    at com.drew.imaging.ImageMetadataReader.readMetadata(Unknown Source) 
    at com.drew.imaging.ImageMetadataReader.readMetadata(Unknown Source) 
    at ImageScaler.main(ImageScaler.java:141) 
Caused by: java.lang.ClassNotFoundException: com.adobe.xmp.XMPException 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    ... 5 more 

Kod:

public static void main (String[] args){ 

    File image = new File("/Users/peterla/Desktop/P8214462.jpg"); 

    Metadata metadata = null; 
    try { 
    metadata = ImageMetadataReader.readMetadata(image); 
    } catch (ImageProcessingException e) { 
    e.printStackTrace(); 
    } catch (IOException e) { 
    e.printStackTrace(); 
    } 

    Directory directory; 

    // Keywords 
    directory = metadata.getDirectory(IptcDirectory.class); 
    String keywords[] = directory.getStringArray(IptcDirectory.TAG_KEYWORDS); 

    // Dimensions 
    directory = metadata.getDirectory(JpegDirectory.class);  
    String height = directory.getString(JpegDirectory.TAG_JPEG_IMAGE_HEIGHT); 
    String width = directory.getString(JpegDirectory.TAG_JPEG_IMAGE_WIDTH);  
} 

Odpowiedz

4

Metadata Extractor ma prosty interfejs do odczytu kilku rodzajów metadanych z wielu cyfrowych formatów graficznych. Dotyczy to formatu metadanych EXIF używanego w obrazach jpeg. Biblioteka ma dobry styl Javadoc documentation.

Podstawowym punktem wejścia do biblioteki jest obiekt ImageMetadataReader.

Strona Getting Started ma przyjemne wprowadzenie, w tym ładny przykład, jak uzyskać wartość dla określonego znacznika z metadanych w formacie EXIF.

Aktualizacja: Przykład dla wydobywania Słowa kluczowe i wymiary

Directory directory; 
// Keywords 
directory = metadata.getDirectory(IptcDirectory.class); 
String keywords[] = directory.getStringArray(IptcDirectory.TAG_KEYWORDS); 

// Dimensions 
directory = metadata.getDirectory(JpegDirectory.class);  
String height = directory.getString(JpegDirectory.TAG_JPEG_IMAGE_HEIGHT); 
String width = directory.getString(JpegDirectory.TAG_JPEG_IMAGE_WIDTH); 

Alternatywy

Alternatywy obejmują wbudowaną java ImageIO biblioteka i Sanselan.

+0

To jest naprawdę świetne. Bardzo łatwe do wdrożenia z przykładami, ale mam trudności z uruchomieniem go do pracy na moich zdjęciach. Myślę, że Aperture może dodać więcej informacji niż może obsłużyć ekstraktor. Szukam wymiarów i słów kluczowych wyodrębnionych ze zdjęć takich jak ten: http://80.167.88.49/masters/test.html –

+0

@Peter Larsen Dodałem przykładowy kod do wyodrębniania wymiarów i słów kluczowych. Przetestowałem to na twoim przykładowym obrazku i to działa dla mnie. Daj mi znać jeśli będziesz jeszcze potrzebować pomocy. –

+0

Nie wiem, co się dzieje, ale pojawia się następujący błąd na tym samym obrazie, który testowałeś. –

1

jhead, narzędzie do obróbki nagłówków EXIF ​​JPEG, to inna opcja.

Powiązane problemy