@Override public boolean canDecodeInput(final Object source) throws IOException { return delegateProvider.canDecodeInput(source); }
/** @see org.geotools.data.coverage.grid.AbstractGridFormat#accepts(java.lang.Object input) */ @Override public boolean accepts(Object input, Hints hints) { try { return spi.canDecodeInput(input); } catch (IOException e) { if (LOGGER.isLoggable(Level.FINE)) { LOGGER.log(Level.FINE, e.getLocalizedMessage(), e); } return false; } }
/** @see org.geotools.data.coverage.grid.AbstractGridFormat#accepts(java.lang.Object input) */ @Override public boolean accepts(Object input, Hints hints) { try { // Directories aren't accepted if (input != null && input instanceof File) { final File directory = (File) input; if (!directory.exists() || directory.isDirectory()) return false; } final ImageInputStream stream = ImageIO.createImageInputStream(input); if (spi == null) { ImageReader reader = Utils.getReader(stream); if (reader != null) spi = reader.getOriginatingProvider(); else return false; } return spi.canDecodeInput(stream); } catch (IOException e) { if (LOGGER.isLoggable(Level.FINE)) { LOGGER.log(Level.FINE, e.getLocalizedMessage(), e); } return false; } } }
public static void main(final String[] pArgs) throws IOException { ImageReader reader = new PICTImageReader(new PICTImageReaderSpi()); for (String arg : pArgs) { File file = new File(arg); try { ImageInputStream input = ImageIO.createImageInputStream(file); String title = file.getName(); System.out.println("canRead: " + reader.getOriginatingProvider().canDecodeInput(input)); reader.setInput(input); // BufferedImage image = reader.getImageTypes(0).next().createBufferedImage(reader.getWidth(0), reader.getHeight(0)); // ImageReadParam param = reader.getDefaultReadParam(); // param.setDestination(image); long start = System.currentTimeMillis(); BufferedImage image = reader.read(0); System.out.println("time: " + (System.currentTimeMillis() - start)); showIt(image, title); System.out.println("image = " + image); } catch (IOException e) { System.err.println("Could not read " + file.getAbsolutePath() + ": " + e); } } } }
uriInStream = new URIImageInputStreamImpl(url.toURI()); source = uriInStream; if (!SPI.canDecodeInput(source)) { if (LOGGER.isLoggable(Level.FINE)) LOGGER.fine("Unable to decode the inputStream"); if (!SPI.canDecodeInput(inputStream)) { if (LOGGER.isLoggable(Level.FINE)) LOGGER.fine("Unable to decode the inputStream"); return false;
@Test public void canDecodeInput() throws Exception { for (String validInput : VALID_INPUTS) { try (ImageInputStream input = ImageIO.createImageInputStream(getClass().getResource(validInput))) { assertTrue("Can't read valid input: " + validInput, provider.canDecodeInput(input)); } } }
boolean canRead = reader.getOriginatingProvider().canDecodeInput(input);
@Test(timeout = 5000) public void canDecodeInputInvalid() throws Exception { for (String invalidInput : INVALID_INPUTS) { try (ImageInputStream input = new ByteArrayImageInputStream(invalidInput.getBytes(StandardCharsets.UTF_8))) { assertFalse("Claims to read invalid input:" + invalidInput, provider.canDecodeInput(input)); } } } }
|| !lastReader.getOriginatingProvider().canDecodeInput(getImageInputStream(data))) { boolean found = false; for (ImageReader ir : readersCache) {
@Test public void testProviderNotMatchJPEG() throws IOException { // This JPEG contains PICT magic bytes at locations a PICT would normally have them. // We should not claim to be able read it. assertFalse(sProvider.canDecodeInput( new TestData(getClassLoaderResource("/jpeg/R-7439-1151526181.jpeg"), new Dimension(386, 396) ))); }
@Test public void testXVThumbNotIncorrectlyRecognizedAsPAM() throws IOException { ImageReaderSpi provider = createProvider(); assertTrue("Should recognize PAM format", provider.canDecodeInput(new TestData(getClassLoaderResource("/pam/rgba.pam"), new Dimension()).getInputStream())); // Sanity assertFalse("Should distinguish xv-thumbs from PAM format", provider.canDecodeInput(new TestData(getClassLoaderResource("/xv-thumb/xv-thumb.xvt"), new Dimension()).getInputStream())); } }
public static ImageReaderSpi getReaderSpiFromStream( ImageReaderSpi suggestedSPI, ImageInputStream inStream) throws IOException { ImageReaderSpi readerSPI = null; // get a reader and try to cache the suggested SPI first inStream.mark(); if (suggestedSPI != null && suggestedSPI.canDecodeInput(inStream)) { readerSPI = suggestedSPI; inStream.reset(); } else { inStream.mark(); ImageReader reader = ImageIOExt.getImageioReader(inStream); if (reader != null) readerSPI = reader.getOriginatingProvider(); inStream.reset(); } return readerSPI; }
/** * Returns an {@link ImageReaderSpi} instance for the input {@link ImageInputStream} and the * optional suggested spi. */ public static ImageReaderSpi getReaderSpiFromStream( ImageReaderSpi suggestedSPI, ImageInputStream inStream) throws IOException { ImageReaderSpi readerSPI = null; // get a reader and try to use the suggested SPI first inStream.mark(); if (suggestedSPI != null && suggestedSPI.canDecodeInput(inStream)) { readerSPI = suggestedSPI; inStream.reset(); } else { inStream.mark(); ImageReader reader = ImageIOExt.getImageioReader(inStream); if (reader != null) readerSPI = reader.getOriginatingProvider(); inStream.reset(); } return readerSPI; }
@Test public void testSPIRecognizesBrokenJPEG() throws IOException { // TODO: There's a bug in com.sun.imageio.plugins.png.PNGImageReaderSpi.canDecode // causing files < 8 bytes to not be recognized as anything... ImageReaderSpi provider = createProvider(); for (TestData data : getBrokenTestData()) { assertTrue(data.toString(), provider.canDecodeInput(data.getInputStream())); } }
@Test public void testProviderCanReadNull() { boolean canRead = false; try { canRead = createProvider().canDecodeInput(null); } catch (IllegalArgumentException ignore) { } catch (RuntimeException e) { failBecause("RuntimeException other than IllegalArgumentException thrown", e); } catch (IOException e) { failBecause("Could not test data for read", e); } assertFalse("ImageReader can read null input", canRead); }
@Test public void testProviderCanRead() throws IOException { List<TestData> testData = getTestData(); ImageReaderSpi provider = createProvider(); for (TestData data : testData) { ImageInputStream stream = data.getInputStream(); assertNotNull(stream); assertTrue("Provider is expected to be able to decode data: " + data, provider.canDecodeInput(stream)); } }
@Test public void testProviderShouldNotConsumeExistingMarks() throws IOException { try (ImageInputStream stream = new ByteArrayImageInputStream(new byte[1024])) { stream.seek(42); stream.mark(); stream.seek(123); sProvider.canDecodeInput(stream); assertEquals(123, stream.getStreamPosition()); stream.reset(); assertEquals(42, stream.getStreamPosition()); } }
public void testProviderCanRead() throws IOException { List<TestData> testData = getTestData(); ImageReaderSpi provider = createProvider(); for (TestData data : testData) { ImageInputStream stream = data.getInputStream(); assertNotNull(stream); assertTrue("Provider is expected to be able to decode data: " + data, provider.canDecodeInput(stream)); } }
@Test public void testSPIRecognizesBrokenJPEG() throws IOException { // TODO: There's a bug in com.sun.imageio.plugins.png.PNGImageReaderSpi.canDecode // causing files < 8 bytes to not be recognized as anything... ImageReaderSpi provider = createProvider(); for (TestData data : getBrokenTestData()) { assertTrue(data.toString(), provider.canDecodeInput(data.getInputStream())); } }
@Test public void testProviderCanRead() throws IOException { List<TestData> testData = getTestData(); ImageReaderSpi provider = createProvider(); for (TestData data : testData) { ImageInputStream stream = data.getInputStream(); assertNotNull(stream); assertTrue("Provider is expected to be able to decode data: " + data, provider.canDecodeInput(stream)); } }