/** * 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; }
while (iter.hasNext()) { spi = iter.next(); if (spi.getInputClass().isInstance(input)) { try { stream = spi.createInputStreamInstance( input, usecache, ImageIO.getCacheDirectory()); break;
private void registerSpi() { // We will register a new Spi for creating NIO-based ImageInputStreams. final IIORegistry defaultInstance = IIORegistry.getDefaultInstance(); Iterator<ImageInputStreamSpi> serviceProviders = defaultInstance.getServiceProviders(ImageInputStreamSpi.class, true); ImageInputStreamSpi toUnorder = null; if (defaultInstance.getServiceProviderByClass(FileImageInputStreamSpi.class) == null) { // register only if not already registered while (serviceProviders.hasNext()) { ImageInputStreamSpi current = serviceProviders.next(); if (current.getInputClass() == File.class) { toUnorder = current; break; } } channelImageInputStreamSpi = new FileImageInputStreamSpi(); defaultInstance.registerServiceProvider(channelImageInputStreamSpi); if (toUnorder != null) { // Make the custom Spi to be the first one to be used. defaultInstance.setOrdering(ImageInputStreamSpi.class, channelImageInputStreamSpi, toUnorder); } } }
public void onRegistration(ServiceRegistry registry, Class<?> category) { super.onRegistration(registry, category); Class<ImageInputStreamSpi> targetClass = ImageInputStreamSpi.class; for (Iterator<? extends ImageInputStreamSpi> i = registry.getServiceProviders(targetClass, true); i.hasNext(); ) { ImageInputStreamSpi other = i.next(); if (this != other) registry.setOrdering(targetClass, this, other); } } /**
private void registerSpi() { // We will register a new Spi for creating NIO-based ImageInputStreams. final IIORegistry defaultInstance = IIORegistry.getDefaultInstance(); Iterator<ImageInputStreamSpi> serviceProviders = defaultInstance.getServiceProviders(ImageInputStreamSpi.class, true); ImageInputStreamSpi toUnorder = null; if (defaultInstance.getServiceProviderByClass(FileImageInputStreamSpi.class) == null) { // register only if not already registered while (serviceProviders.hasNext()) { ImageInputStreamSpi current = serviceProviders.next(); if (current.getInputClass() == File.class) { toUnorder = current; break; } } channelImageInputStreamSpi = new FileImageInputStreamSpi(); defaultInstance.registerServiceProvider(channelImageInputStreamSpi); if (toUnorder != null) { // Make the custom Spi to be the first one to be used. defaultInstance.setOrdering(ImageInputStreamSpi.class, channelImageInputStreamSpi, toUnorder); } } } }
/** * Upon registration, this method ensures that this SPI is listed at the top * of the ImageInputStreamSpi items, so that it will be invoked before the * default FileImageInputStreamSpi * * @param registry * ServiceRegistry where this object has been registered. * @param category * a Class object indicating the registry category under which * this object has been registered. */ public void onRegistration(ServiceRegistry registry, Class<?> category) { super.onRegistration(registry, category); Class<ImageInputStreamSpi> targetClass = ImageInputStreamSpi.class; for (Iterator<? extends ImageInputStreamSpi> i = registry.getServiceProviders(targetClass, true); i.hasNext();) { ImageInputStreamSpi other = i.next(); // using class name to avoid warnings in JDK 11 if (other != null && other.getClass().getName().equals("com.sun.imageio.spi.FileImageInputStreamSpi")) registry.deregisterServiceProvider(other); if (this != other) registry.setOrdering(targetClass, this, other); } }
try { stream = streamSpi.createInputStreamInstance( fileURL, ImageIO.getUseCache(), ImageIO.getCacheDirectory()); readerSpi = getReaderSpiFromStream(suggestedSPI, stream);
if (spi.getInputClass().isInstance(input)) { try { return spi.createInputStreamInstance(input, usecache, getCacheDirectory()); } catch (IOException e) { throw new IIOException("Can't create cache file!", e);
/** * Registers a file image input strwM SPI for image input stream, if none is yet registered. */ protected void registerSpi() { final IIORegistry defaultInstance = IIORegistry.getDefaultInstance(); Iterator<ImageInputStreamSpi> serviceProviders = defaultInstance.getServiceProviders(ImageInputStreamSpi.class, true); ImageInputStreamSpi toUnorder = null; if (defaultInstance.getServiceProviderByClass(FileImageInputStreamSpi.class) == null) { // register only if not already registered while (serviceProviders.hasNext()) { ImageInputStreamSpi current = serviceProviders.next(); if (current.getInputClass() == File.class) { toUnorder = current; break; } } imageInputStreamSpi = new FileImageInputStreamSpi(); defaultInstance.registerServiceProvider(imageInputStreamSpi); if (toUnorder != null) { // Make the custom Spi to be the first one to be used. defaultInstance.setOrdering(ImageInputStreamSpi.class, imageInputStreamSpi, toUnorder); } } }
/** * Upon registration, this method ensures that this SPI is listed at the top * of the ImageInputStreamSpi items, so that it will be invoked before the * default FileImageInputStreamSpi * * @param registry * ServiceRegistry where this object has been registered. * @param category * a Class object indicating the registry category under which * this object has been registered. */ public void onRegistration(ServiceRegistry registry, Class<?> category) { super.onRegistration(registry, category); Class<ImageInputStreamSpi> targetClass = ImageInputStreamSpi.class; for (Iterator<? extends ImageInputStreamSpi> i = registry.getServiceProviders(targetClass, true); i.hasNext();) { ImageInputStreamSpi other = i.next(); if (other instanceof FileImageInputStreamSpi) registry.deregisterServiceProvider(other); if (this != other) registry.setOrdering(targetClass, this, other); } }
streamSpi.createInputStreamInstance( inputFile, ImageIO.getUseCache(), ImageIO.getCacheDirectory());
while (iter.hasNext()) { spi = (ImageInputStreamSpi) iter.next(); if (spi.getInputClass().isInstance(input)) { ImageInputStream stream = null; try { stream = spi.createInputStreamInstance(input, usecache, ImageIO.getCacheDirectory()); break; } catch (IOException e) {
throw new IllegalArgumentException("No input stream for the provided source"); inStream = inStreamSPI.createInputStreamInstance( source, ImageIO.getUseCache(), ImageIO.getCacheDirectory());
throw new DataSourceException("No input stream for the provided source"); inStream = inStreamSPI.createInputStreamInstance( sourceFile, ImageIO.getUseCache(), ImageIO.getCacheDirectory());
info.streamSpi.createInputStreamInstance( granuleUrl, ImageIO.getUseCache(), ImageIO.getCacheDirectory());
throw new DataSourceException("No input stream for the provided source"); inStream = inStreamSPI.createInputStreamInstance( this.source, ImageIO.getUseCache(), ImageIO.getCacheDirectory());
inStreamSPI.createInputStreamInstance( source, ImageIO.getUseCache(), ImageIO.getCacheDirectory());
cachedStreamSPI.createInputStreamInstance( granuleUrl, ImageIO.getUseCache(), ImageIO.getCacheDirectory()); if (inStream == null)
.createInputStreamInstance( fileURL, ImageIO.getUseCache(), streamOvr = getExternalOverviewInputStreamSpi() .createInputStreamInstance( ovrURL, ImageIO.getUseCache(),
if (inStreamSPI != null) pbjImageRead.add( inStreamSPI.createInputStreamInstance( source, ImageIO.getUseCache(), ImageIO.getCacheDirectory())); else pbjImageRead.add(ImageIO.createImageInputStream(source));