1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.tika.parser.jpeg;
18
19 import java.io.IOException;
20 import java.io.InputStream;
21 import java.util.Iterator;
22
23 import org.apache.tika.exception.TikaException;
24 import org.apache.tika.metadata.Metadata;
25 import org.xml.sax.SAXException;
26
27 import com.drew.imaging.jpeg.JpegMetadataReader;
28 import com.drew.imaging.jpeg.JpegProcessingException;
29 import com.drew.metadata.Directory;
30 import com.drew.metadata.MetadataException;
31 import com.drew.metadata.Tag;
32
33 class JpegExtractor {
34
35 private final Metadata metadata;
36
37 public JpegExtractor(Metadata metadata) {
38 this.metadata = metadata;
39 }
40
41 public void parse(InputStream stream)
42 throws IOException, SAXException, TikaException {
43 try {
44 com.drew.metadata.Metadata jpegMetadata =
45 JpegMetadataReader.readMetadata(stream);
46
47 Iterator<?> directories = jpegMetadata.getDirectoryIterator();
48 while (directories.hasNext()) {
49 Directory directory = (Directory) directories.next();
50 Iterator<?> tags = directory.getTagIterator();
51
52 while (tags.hasNext()) {
53 Tag tag = (Tag)tags.next();
54 metadata.set(tag.getTagName(), tag.getDescription());
55 }
56 }
57 } catch (JpegProcessingException e) {
58 throw new TikaException("Can't read JPEG metadata", e);
59 } catch (MetadataException e) {
60 throw new TikaException("Can't read JPEG metadata", e);
61 }
62 }
63
64 }