Iterator<ImageTypeSpecifier> imageTypes = reader.getImageTypes(0); while (imageTypes.hasNext()) { ImageTypeSpecifier imageTypeSpecifier = imageTypes.next(); int width = reader.getWidth(0); Iterator<ImageTypeSpecifier> imageTypes = reader.getImageTypes(0); if (imageTypes.hasNext()) { ImageTypeSpecifier imageTypeSpecifier = imageTypes.next();
private Iterator<ImageTypeSpecifier> getImageTypesPNG(final DirectoryEntry pEntry) throws IOException { return initPNGReader(pEntry).getImageTypes(0); }
public Iterator<ImageTypeSpecifier> getImageTypes(int pIndex) throws IOException { init(pIndex); initReader(pIndex); return reader.getImageTypes(0); }
Iterator<ImageTypeSpecifier> types = reader.getImageTypes(0);
ImageReadParam param = reader.getDefaultReadParam(); reader.setInput(stream, true, true); Iterator<ImageTypeSpecifier> imageTypes = reader.getImageTypes(0); while (imageTypes.hasNext()) { ImageTypeSpecifier imageTypeSpecifier = imageTypes.next();
types = delegate.getImageTypes(0);
profile != null && !ColorSpaces.isCS_sRGB(profile) || (long) sof.lines * sof.samplesPerLine > Integer.MAX_VALUE || !delegate.getImageTypes(0).hasNext() ||
private ByteArrayOutputStream transcode(final ImageReader reader, final URL resource, final ImageWriter writer, int outCSType) throws IOException { try (ImageInputStream input = ImageIO.createImageInputStream(resource)) { reader.setInput(input); ImageTypeSpecifier specifier = null; Iterator<ImageTypeSpecifier> types = reader.getImageTypes(0); while (types.hasNext()) { ImageTypeSpecifier type = types.next(); if (type.getColorModel().getColorSpace().getType() == outCSType) { specifier = type; break; } } // Read image with requested color space ImageReadParam readParam = reader.getDefaultReadParam(); readParam.setSourceRegion(new Rectangle(Math.min(100, reader.getWidth(0)), Math.min(100, reader.getHeight(0)))); readParam.setDestinationType(specifier); IIOImage image = reader.readAll(0, readParam); // Write it back ByteArrayOutputStream bytes = new ByteArrayOutputStream(1024); try (ImageOutputStream output = new MemoryCacheImageOutputStream(bytes)) { writer.setOutput(output); ImageWriteParam writeParam = writer.getDefaultWriteParam(); writeParam.setDestinationType(specifier); writer.write(null, image, writeParam); return bytes; } } }
@Test public void testSetDestinationTypeIllegal() throws IOException { final ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); List<ImageTypeSpecifier> illegalTypes = createIllegalTypes(reader.getImageTypes(0)); ImageReadParam param = reader.getDefaultReadParam(); for (ImageTypeSpecifier illegalType : illegalTypes) { param.setDestinationType(illegalType); try { reader.read(0, param); fail("Expected to throw exception with illegal type specifier"); } catch (IIOException | IllegalArgumentException expected) { // TODO: This is thrown by ImageReader.getDestination. But are we happy with that? String message = expected.getMessage().toLowerCase(); if (!(message.contains("destination") && message.contains("type") || message.contains("num source & dest bands differ"))) { // Allow this to bubble up, due to a bug in the Sun PNGImageReader throw expected; } } } reader.dispose(); }
reader.setInput(data.getInputStream()); List<ImageTypeSpecifier> illegalTypes = createIllegalTypes(reader.getImageTypes(0));
@Override @Test public void testGetTypeSpecifiers() throws IOException { final ImageReader reader = createReader(); for (TestData data : getTestData()) { reader.setInput(data.getInputStream()); ImageTypeSpecifier rawType = reader.getRawImageType(0); // As the JPEGImageReader we delegate to returns null for YCbCr, we'll have to do the same if (rawType == null && data.getInput().toString().contains("jpeg")) { continue; } assertNotNull(rawType); Iterator<ImageTypeSpecifier> types = reader.getImageTypes(0); assertNotNull(types); assertTrue(types.hasNext()); // TODO: This might fail even though the specifiers are obviously equal, if the // color spaces they use are not the SAME instance, as ColorSpace uses identity equals // and Interleaved ImageTypeSpecifiers are only equal if color spaces are equal... boolean rawFound = false; while (types.hasNext()) { ImageTypeSpecifier type = types.next(); if (type.equals(rawType)) { rawFound = true; break; } } assertTrue("ImageTypeSepcifier from getRawImageType should be in the iterator from getImageTypes", rawFound); } }
@Test public void testSetDestination() throws IOException { ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); ImageReadParam param = reader.getDefaultReadParam(); Iterator<ImageTypeSpecifier> types = reader.getImageTypes(0); while (types.hasNext()) { ImageTypeSpecifier type = types.next(); BufferedImage destination = type.createBufferedImage(50, 50); param.setDestination(destination); BufferedImage result = null; try { result = reader.read(0, param); } catch (Exception e) { failBecause("Could not read " + data.getInput() + " with explicit destination " + destination, e); } assertSame(destination, result); } reader.dispose(); }
@Test public void testGetTypeSpecifiers() throws IOException { final ImageReader reader = createReader(); for (TestData data : getTestData()) { reader.setInput(data.getInputStream()); ImageTypeSpecifier rawType = reader.getRawImageType(0); if (rawType == null && allowsNullRawImageType()) { continue; } assertNotNull(rawType); Iterator<ImageTypeSpecifier> types = reader.getImageTypes(0); assertNotNull(types); assertTrue(types.hasNext()); // TODO: This might fail even though the specifiers are obviously equal, if the // color spaces they use are not the SAME instance, as ColorSpace uses identity equals // and Interleaved ImageTypeSpecifiers are only equal if color spaces are equal... boolean rawFound = false; while (types.hasNext()) { ImageTypeSpecifier type = types.next(); if (type.equals(rawType)) { rawFound = true; break; } } assertTrue("ImageTypeSepcifier from getRawImageType should be in the iterator from getImageTypes", rawFound); } reader.dispose(); }
/** * Extract the ImageLayout from the provided reader for the first available image. * * @param reader an istance of {@link ImageReader} * @throws IOException in case an error occurs */ protected void setLayout(ImageReader reader) throws IOException { Utilities.ensureNonNull("reader", reader); // save ImageLayout ImageLayout2 layout = new ImageLayout2(); ImageTypeSpecifier its = reader.getImageTypes(0).next(); layout.setColorModel(its.getColorModel()).setSampleModel(its.getSampleModel()); layout.setMinX(0).setMinY(0).setWidth(reader.getWidth(0)).setHeight(reader.getHeight(0)); layout.setTileGridXOffset(0) .setTileGridYOffset(0) .setTileWidth(reader.getTileWidth(0)) .setTileHeight(reader.getTileHeight(0)); setlayout(layout); }
@Override public Iterator<ImageTypeSpecifier> getImageTypes(int imageIndex) throws IOException { return nativeReader.getImageTypes(imageIndex); }
@Override public Iterator<ImageTypeSpecifier> getImageTypes(int imageIndex) throws IOException { // Index changes from 1 to 0 as the Dicom frames start to count at 1 // ImageReader expects the first frame to be 0. initImageReader(0); return reader.getImageTypes(0); }
Iterator<ImageTypeSpecifier> types = reader.getImageTypes(0); while (types.hasNext()) { ImageTypeSpecifier type = types.next();
public Iterator<ImageTypeSpecifier> getImageTypes(int pIndex) throws IOException { init(pIndex); initReader(pIndex); return reader.getImageTypes(0); }
ImageInputStream stream = ImageIO.createImageInputStream(input); ImageReader reader = ImageIO.getImageReaders(stream).next(); // TODO: Test hasNext() reader.setInput(stream); int width = reader.getWidth(0); int height = reader.getHeight(0); ImageTypeSpecifier spec = reader.getImageTypes(0).next(); // TODO: Test hasNext(); BufferedImage image = MappedImageFactory.createCompatibleMappedImage(width, height, spec) ImageReadParam param = reader.getDefaultReadParam(); param.setDestination(image); image = reader.read(0, param); // Will return same image as created above // ...process image as needed...
ImageReader reader; // the reader for your format reader.setInput(input); // your input // Create image from type specifier ImageTypeSpecifier spec = reader.getImageTypes(0).next(); BufferedImage destination = spec.createBufferedImage(reader.getWidth(), reader.getHeight(); ImageReadParam param = reader.getDefaultReadParam(); param.setDestination(destination); reader.read(0, param); // Image will be decoded to destination