22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package com.sun.imageio.plugins.jpeg;
27
28 import java.util.Locale;
29 import javax.imageio.spi.ImageReaderSpi;
30 import javax.imageio.stream.ImageInputStream;
31 import javax.imageio.spi.IIORegistry;
32 import javax.imageio.spi.ServiceRegistry;
33 import java.io.IOException;
34 import javax.imageio.ImageReader;
35 import javax.imageio.IIOException;
36
37 public class JPEGImageReaderSpi extends ImageReaderSpi {
38
39 private static String [] writerSpiNames =
40 {"com.sun.imageio.plugins.jpeg.JPEGImageWriterSpi"};
41
42 private boolean registered = false;
43
44 public JPEGImageReaderSpi() {
45 super(JPEG.vendor,
46 JPEG.version,
47 JPEG.names,
48 JPEG.suffixes,
49 JPEG.MIMETypes,
50 "com.sun.imageio.plugins.jpeg.JPEGImageReader",
51 new Class[] { ImageInputStream.class },
52 writerSpiNames,
53 true,
54 JPEG.nativeStreamMetadataFormatName,
55 JPEG.nativeStreamMetadataFormatClassName,
56 null, null,
57 true,
58 JPEG.nativeImageMetadataFormatName,
59 JPEG.nativeImageMetadataFormatClassName,
60 null, null
61 );
62 }
63
64 public void onRegistration(ServiceRegistry registry,
65 Class<?> category) {
66 if (registered) {
67 return;
68 }
69 try {
70 java.security.AccessController.doPrivileged(
71 new sun.security.action.LoadLibraryAction("jpeg"));
72 // Stuff it all into one lib for first pass
73 //java.security.AccessController.doPrivileged(
74 //new sun.security.action.LoadLibraryAction("imageioIJG"));
75 } catch (Throwable e) { // Fail on any Throwable
76 // if it can't be loaded, deregister and return
77 registry.deregisterServiceProvider(this);
78 return;
79 }
80
81 registered = true;
82 }
83
84 public String getDescription(Locale locale) {
85 return "Standard JPEG Image Reader";
86 }
87
88 public boolean canDecodeInput(Object source) throws IOException {
89 if (!(source instanceof ImageInputStream)) {
90 return false;
91 }
92 ImageInputStream iis = (ImageInputStream) source;
93 iis.mark();
94 // If the first two bytes are a JPEG SOI marker, it's probably
95 // a JPEG file. If they aren't, it definitely isn't a JPEG file.
96 int byte1 = iis.read();
97 int byte2 = iis.read();
98 iis.reset();
99 if ((byte1 == 0xFF) && (byte2 == JPEG.SOI)) {
100 return true;
101 }
|
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26 package com.sun.imageio.plugins.jpeg;
27
28 import java.util.Locale;
29 import javax.imageio.spi.ImageReaderSpi;
30 import javax.imageio.stream.ImageInputStream;
31 import javax.imageio.spi.IIORegistry;
32 import javax.imageio.spi.ServiceRegistry;
33 import java.io.IOException;
34 import javax.imageio.ImageReader;
35 import javax.imageio.IIOException;
36
37 public class JPEGImageReaderSpi extends ImageReaderSpi {
38
39 private static String [] writerSpiNames =
40 {"com.sun.imageio.plugins.jpeg.JPEGImageWriterSpi"};
41
42 public JPEGImageReaderSpi() {
43 super(JPEG.vendor,
44 JPEG.version,
45 JPEG.names,
46 JPEG.suffixes,
47 JPEG.MIMETypes,
48 "com.sun.imageio.plugins.jpeg.JPEGImageReader",
49 new Class[] { ImageInputStream.class },
50 writerSpiNames,
51 true,
52 JPEG.nativeStreamMetadataFormatName,
53 JPEG.nativeStreamMetadataFormatClassName,
54 null, null,
55 true,
56 JPEG.nativeImageMetadataFormatName,
57 JPEG.nativeImageMetadataFormatClassName,
58 null, null
59 );
60 }
61
62 public String getDescription(Locale locale) {
63 return "Standard JPEG Image Reader";
64 }
65
66 public boolean canDecodeInput(Object source) throws IOException {
67 if (!(source instanceof ImageInputStream)) {
68 return false;
69 }
70 ImageInputStream iis = (ImageInputStream) source;
71 iis.mark();
72 // If the first two bytes are a JPEG SOI marker, it's probably
73 // a JPEG file. If they aren't, it definitely isn't a JPEG file.
74 int byte1 = iis.read();
75 int byte2 = iis.read();
76 iis.reset();
77 if ((byte1 == 0xFF) && (byte2 == JPEG.SOI)) {
78 return true;
79 }
|