|
|
|
@ -65,18 +65,17 @@ import com.drew.metadata.Metadata;
|
|
|
|
|
import com.drew.metadata.Tag;
|
|
|
|
|
import com.drew.metadata.exif.GpsDirectory;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Parser for images, bmp and jpeg and all supported by the Java Image I/O API
|
|
|
|
|
* by default java ImageIO supports bmp, gif, jpg, jpeg, png, wbmp (tif if jai-imageio is in classpath/registered)
|
|
|
|
|
* http://download.java.net/media/jai-imageio/javadoc/1.1/overview-summary.html
|
|
|
|
|
*/
|
|
|
|
|
public class genericImageParser extends AbstractParser implements Parser {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* a list of mime types that are supported by this parser class
|
|
|
|
|
* @see #getSupportedMimeTypes()
|
|
|
|
|
*/
|
|
|
|
|
public static final Set<String> SUPPORTED_MIME_TYPES = new HashSet<String>();
|
|
|
|
|
public static final Set<String> SUPPORTED_EXTENSIONS = new HashSet<String>();
|
|
|
|
|
static {
|
|
|
|
|
public genericImageParser() {
|
|
|
|
|
super("Generic Image Parser");
|
|
|
|
|
|
|
|
|
|
SUPPORTED_EXTENSIONS.add("bmp");
|
|
|
|
|
// by default java ImageIO supports bmp, gif, jpg, jpeg, png, wbmp (tif if jai-imageio is in classpath/registered)
|
|
|
|
|
// http://download.java.net/media/jai-imageio/javadoc/1.1/overview-summary.html
|
|
|
|
|
SUPPORTED_EXTENSIONS.add("jpe"); // not listed in ImageIO extension but sometimes uses for jpeg
|
|
|
|
|
SUPPORTED_EXTENSIONS.addAll(Arrays.asList(ImageIO.getReaderFileSuffixes()));
|
|
|
|
|
|
|
|
|
@ -85,10 +84,6 @@ public class genericImageParser extends AbstractParser implements Parser {
|
|
|
|
|
SUPPORTED_MIME_TYPES.addAll(Arrays.asList(ImageIO.getReaderMIMETypes()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public genericImageParser() {
|
|
|
|
|
super("Generic Image Parser");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Document[] parse(
|
|
|
|
|
final AnchorURL location,
|
|
|
|
@ -130,7 +125,8 @@ public class genericImageParser extends AbstractParser implements Parser {
|
|
|
|
|
try {
|
|
|
|
|
b = FileUtils.read(source);
|
|
|
|
|
// check jpeg file signature (magic number FF D8 FF)
|
|
|
|
|
if ((b[0] != (byte) 0xFF) // cast to signed byte (-1)
|
|
|
|
|
if (b.length < 3
|
|
|
|
|
|| (b[0] != (byte) 0xFF) // cast to signed byte (-1)
|
|
|
|
|
|| (b[1] != (byte) 0xD8) //cast to signed byte (-40)
|
|
|
|
|
|| (b[2] != (byte) 0xFF)) {
|
|
|
|
|
throw new Parser.Failure("File has no jpeg signature", location);
|
|
|
|
@ -232,7 +228,7 @@ public class genericImageParser extends AbstractParser implements Parser {
|
|
|
|
|
return SUPPORTED_EXTENSIONS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static ImageInfo parseJavaImage(
|
|
|
|
|
private ImageInfo parseJavaImage(
|
|
|
|
|
final AnchorURL location,
|
|
|
|
|
final InputStream sourceStream) throws Parser.Failure {
|
|
|
|
|
BufferedImage image = null;
|
|
|
|
@ -247,7 +243,7 @@ public class genericImageParser extends AbstractParser implements Parser {
|
|
|
|
|
return parseJavaImage(location, image);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static ImageInfo parseJavaImage(
|
|
|
|
|
private ImageInfo parseJavaImage(
|
|
|
|
|
final AnchorURL location,
|
|
|
|
|
final BufferedImage image) {
|
|
|
|
|
final ImageInfo ii = new ImageInfo(location);
|
|
|
|
@ -284,7 +280,7 @@ public class genericImageParser extends AbstractParser implements Parser {
|
|
|
|
|
return ii;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static class ImageInfo {
|
|
|
|
|
private class ImageInfo {
|
|
|
|
|
public AnchorURL location;
|
|
|
|
|
public BufferedImage image;
|
|
|
|
|
public StringBuilder info;
|
|
|
|
|