source: josm/trunk/src/com/drew/metadata/jpeg/JpegCommentReader.java@ 4231

Last change on this file since 4231 was 4231, checked in by stoecker, 13 years ago

add signpost and metadata extractor code to repository directly

File size: 2.4 KB
Line 
1/*
2 * This is public domain software - that is, you can do whatever you want
3 * with it, and include it software that is licensed under the GNU or the
4 * BSD license, or whatever other licence you choose, including proprietary
5 * closed source licenses. I do ask that you leave this header in tact.
6 *
7 * If you make modifications to this code that you think would benefit the
8 * wider community, please send me a copy and I'll post it on my site.
9 *
10 * If you make use of this code, I'd appreciate hearing about it.
11 * drew@drewnoakes.com
12 * Latest version of this software kept at
13 * http://drewnoakes.com/
14 *
15 * Created by dnoakes on Oct 10, 2003 using IntelliJ IDEA.
16 */
17package com.drew.metadata.jpeg;
18
19import com.drew.imaging.jpeg.JpegProcessingException;
20import com.drew.imaging.jpeg.JpegSegmentReader;
21import com.drew.metadata.Metadata;
22import com.drew.metadata.MetadataReader;
23
24import java.io.File;
25import java.io.InputStream;
26
27/**
28 *
29 * @author Drew Noakes http://drewnoakes.com
30 */
31public class JpegCommentReader implements MetadataReader
32{
33 /**
34 * The COM data segment.
35 */
36 private final byte[] _data;
37
38 /**
39 * Creates a new JpegReader for the specified Jpeg jpegFile.
40 */
41 public JpegCommentReader(File jpegFile) throws JpegProcessingException
42 {
43 this(new JpegSegmentReader(jpegFile).readSegment(JpegSegmentReader.SEGMENT_COM));
44 }
45
46 /** Creates a JpegCommentReader for a JPEG stream.
47 *
48 * @param is JPEG stream. Stream will be closed.
49 */
50 public JpegCommentReader(InputStream is) throws JpegProcessingException
51 {
52 this(new JpegSegmentReader(is).readSegment(JpegSegmentReader.SEGMENT_APPD));
53 }
54
55 public JpegCommentReader(byte[] data)
56 {
57 _data = data;
58 }
59
60 /**
61 * Performs the Jpeg data extraction, returning a new instance of <code>Metadata</code>.
62 */
63 public Metadata extract()
64 {
65 return extract(new Metadata());
66 }
67
68 /**
69 * Performs the Jpeg data extraction, adding found values to the specified
70 * instance of <code>Metadata</code>.
71 */
72 public Metadata extract(Metadata metadata)
73 {
74 if (_data==null) {
75 return metadata;
76 }
77
78 JpegCommentDirectory directory = (JpegCommentDirectory)metadata.getDirectory(JpegCommentDirectory.class);
79
80 directory.setString(JpegCommentDirectory.TAG_JPEG_COMMENT, new String(_data));
81
82 return metadata;
83 }
84}
Note: See TracBrowser for help on using the repository browser.