Iterator<ImageWriterSpi> services = registry.getServiceProviders(ImageWriterSpi.class, new ServiceRegistry.Filter() { @Override String[] formatNames = writerSPI.getFormatNames(); for (int i = 0; i < formatNames.length; i++) { if (formatNames[i].equalsIgnoreCase("JPEG")) { ImageWriter writer = writerSpi.createWriterInstance();
/** * Unregisters providers in the "https://github.com/geosolutions-it/evo-odas/issues/102" for a * given category (reader, writer). ImageIO contains a pure java reader and a writer, but also a * couple based on native libs (if present). * * @param category */ private <T extends ImageReaderWriterSpi> void unregisterImageIOJpeg2000Support( Class<T> category) { IIORegistry registry = IIORegistry.getDefaultInstance(); Iterator<T> it = registry.getServiceProviders(category, false); ArrayList<T> providers = Lists.newArrayList(it); for (T spi : providers) { if (COM_SUN_JPEG2000_PACKAGE.equals(spi.getClass().getPackage().getName())) { registry.deregisterServiceProvider(spi); } } }
private String getWriterFormatName(String t) { Iterator<ImageWriter> i = ImageIO.getImageWritersByMIMEType(t); if (!i.hasNext()) { return null; } return i.next().getOriginatingProvider().getFormatNames()[0]; } }
@Test public void testJPEG2000Registration() { IIORegistry registry = IIORegistry.getDefaultInstance(); assertNoSunJPEG2000(registry, ImageReaderSpi.class); assertNoSunJPEG2000(registry, ImageWriterSpi.class); }
private <T extends ImageReaderWriterSpi> void assertNoSunJPEG2000( IIORegistry registry, Class<T> category) { Iterator<T> it = registry.getServiceProviders(category, false); while (it.hasNext()) { T spi = it.next(); assertThat( spi.getClass().getPackage().getName(), not(startsWith(GeoserverInitStartupListener.COM_SUN_JPEG2000_PACKAGE))); } } }
@Override public boolean canDecodeInput(final Object source) throws IOException { return delegateProvider.canDecodeInput(source); }
@Override public boolean canEncodeImage(final RenderedImage im) { return delegateProvider.canEncodeImage(im); }
/** * Reads an image from a GeoTIFF file. For more information, see <a * href="http://download.java.net/media/jai-imageio/javadoc/1.1/com/sun/media/jai/operator/ImageReadDescriptor.html#RenderedMode">ImageReadDescriptor</a> */ private static synchronized RenderedImage readImage(File inFile) throws IOException { final ParameterBlock readParams = new ParameterBlock(); ImageInputStreamSpi lSpi = ImageIOExt.getImageInputStreamSPI(inFile); PlanarImage lImage = null; ImageInputStream lImgIn = lSpi.createInputStreamInstance(inFile, false, null); readParams.add(lImgIn); readParams.add(0); readParams.add(Boolean.FALSE); readParams.add(Boolean.FALSE); readParams.add(Boolean.FALSE); readParams.add(null); readParams.add(null); readParams.add(null); readParams.add(READER_SPI.createReaderInstance()); lImage = JAI.create("ImageRead", readParams, null); final String lFileName = inFile.getName(); final int lExtIndex = lFileName.lastIndexOf('.'); final String lFileNameNoExt = lExtIndex < 0 ? lFileName : lFileName.substring(0, lExtIndex); lImage.setProperty("name", lFileNameNoExt); return lImage; }
@Override public Class[] getOutputTypes() { return delegateProvider.getOutputTypes(); } }
@Override public String getNativeImageMetadataFormatName() { return delegateProvider.getNativeImageMetadataFormatName(); }
@Override public Class[] getInputTypes() { return delegateProvider.getInputTypes(); } }
@Override public String getNativeImageMetadataFormatName() { return delegateProvider.getNativeImageMetadataFormatName(); }
String[] suffixes = iw.getOriginatingProvider().getFileSuffixes();
@Override public boolean isStandardImageMetadataFormatSupported() { return delegateProvider.isStandardImageMetadataFormatSupported(); }
@Override public boolean isStandardImageMetadataFormatSupported() { return delegateProvider.isStandardImageMetadataFormatSupported(); }
@Override public IIOMetadataFormat getStreamMetadataFormat(final String formatName) { return delegateProvider.getStreamMetadataFormat(formatName); }
@Override public String[] getExtraStreamMetadataFormatNames() { return delegateProvider.getExtraStreamMetadataFormatNames(); }
@Override public IIOMetadataFormat getImageMetadataFormat(final String formatName) { return delegateProvider.getImageMetadataFormat(formatName); }
private String getWriterFormatName(String t) { Iterator<ImageWriter> i = ImageIO.getImageWritersByMIMEType(t); if (!i.hasNext()) { return null; } return i.next().getOriginatingProvider().getFormatNames()[0]; } }
@Override public String[] getFormatNames() { // NOTE: Can't use super.getFormatNames() which includes JPEG-Lossless return delegateProvider.getFormatNames(); }