public static Point getImageSizeFromStream(InputStream is) { if (!initialized) { // Stops ImageIO from creating temp files when reading images // from input stream. ImageIO.setUseCache(false); initialized = true; } try { ImageInputStream imageStream = ImageIO.createImageInputStream(is); Iterator<ImageReader> readers = ImageIO.getImageReaders(imageStream); if (!readers.hasNext()) return null; ImageReader reader = readers.next(); try { reader.setInput(imageStream); return new Point(reader.getWidth(0), reader.getHeight(0)); } finally { reader.dispose(); } } catch (IOException e) { throw new RuntimeException(e); } }
public ImageMetadata getImageMetadata(InputStream artifactStream) throws Exception { ImageMetadata imageMetadata = new ImageMetadata(); ImageInputStream iis = ImageIO.createImageInputStream(artifactStream); Iterator<ImageReader> readers = ImageIO.getImageReaders(iis); if (readers.hasNext()) { ImageReader reader = readers.next(); reader.setInput(iis, true); imageMetadata.setWidth(reader.getWidth(0)); imageMetadata.setHeight(reader.getHeight(0)); } else { throw new Exception("Unable to retrieve image metadata from stream. Are you sure the stream provided is a valid input stream for an image source?"); } return imageMetadata; }
public InputStream convert(InputStream artifactStream, BufferedImageOp filter) throws Exception { ImageInputStream iis = ImageIO.createImageInputStream(artifactStream); Iterator<ImageReader> iter = ImageIO.getImageReaders(iis); ImageReader reader = iter.next(); String formatName = reader.getFormatName(); artifactStream.reset(); BufferedImage image = ImageIO.read(ImageIO.createImageInputStream(artifactStream)); //before if (formatName.toLowerCase().equals("jpeg") || formatName.toLowerCase().equals("jpg")) { image = stripAlpha(image); } image = filter.filter(image, null); if (formatName.toLowerCase().equals("gif")) { formatName = "png"; } InputStream result = compress(image, formatName); if (formatName.equals("png")) { result = compressPNG(result); } return result; }
public void readAndDisplayMetadata(File file) throws IOException { final ImageInputStream iis = ImageIO.createImageInputStream(file); final Iterator<ImageReader> readers = ImageIO.getImageReaders(iis); if (readers.hasNext()) { // pick the first available ImageReader final ImageReader reader = readers.next(); // attach source to the reader reader.setInput(iis, true); // read metadata of first image final IIOMetadata metadata = reader.getImageMetadata(0); final String[] names = metadata.getMetadataFormatNames(); final int length = names.length; for (int i = 0; i < length; i++) { displayMetadata(metadata.getAsTree(names[i])); } } }
public String getData() throws IOException { final ImageInputStream iis = ImageIO.createImageInputStream(source); final Iterator<ImageReader> readers = ImageIO.getImageReaders(iis); if (readers.hasNext()) { // pick the first available ImageReader final ImageReader reader = readers.next(); // attach source to the reader reader.setInput(iis, true); // read metadata of first image final IIOMetadata metadata = reader.getImageMetadata(0); final String[] names = metadata.getMetadataFormatNames(); final int length = names.length; for (int i = 0; i < length; i++) { final String result = displayMetadata(metadata.getAsTree(names[i])); if (result != null) { return result; } } } return null; }
private Frame[] readFrames(int width, int height, ImageInputStream stream) throws IOException { Iterator<ImageReader> readers = ImageIO.getImageReaders(stream); Assert.state(readers.hasNext(), "Unable to read image banner source"); ImageReader reader = readers.next(); try { ImageReadParam readParam = reader.getDefaultReadParam(); reader.setInput(stream); int frameCount = reader.getNumImages(true); Frame[] frames = new Frame[frameCount]; for (int i = 0; i < frameCount; i++) { frames[i] = readFrame(width, height, reader, i, readParam); } return frames; } finally { reader.dispose(); } }
Iterator<ImageReader> iter = ImageIO.getImageReaders(iis); ImageReader reader = iter.next(); String formatName = reader.getFormatName();
final Iterator<ImageReader> readers = ImageIO.getImageReaders(iis); if (!readers.hasNext()) { throw new ProcessException("FlowFile is not in a valid format");
if (operations != null && operations.length > 0) { ImageInputStream iis = ImageIO.createImageInputStream(artifactStream); Iterator<ImageReader> iter = ImageIO.getImageReaders(iis); ImageReader reader = iter.next(); String formatName = reader.getFormatName();
Iterator<ImageReader> i = ImageIO.getImageReaders( iis ); ImageReader r = i.next(); try {
Iterator<ImageReader> readers = ImageIO.getImageReaders(iis); if (!readers.hasNext())
Iterator<ImageReader> iter = ImageIO.getImageReaders(iis); while (img==null && iter.hasNext()) { ImageReader reader = iter.next();
Iterator<ImageReader> readers = ImageIO.getImageReaders(iis); if (!readers.hasNext())
/** * Retrieves the request result as a list of BufferedImages from an animated format (works with * GIF, other formats are not tested so far). */ protected List<BufferedImage> getAsAnimation(String path, String mime) throws Exception { MockHttpServletResponse resp = getAsServletResponse(path); assertEquals(mime, resp.getContentType()); try (ImageInputStream is = ImageIO.createImageInputStream(getBinaryInputStream(resp))) { ImageReader reader = ImageIO.getImageReaders(is).next(); reader.setInput(is); final int numImages = reader.getNumImages(true); List<BufferedImage> result = new ArrayList<>(numImages); for (int i = 0; i < numImages; i++) { result.add(reader.read(i)); } return result; } }
/** * Look for an {@link ImageReader} instance that is able to read the provided {@link * ImageInputStream}, which must be non null. * * <p>In case no reader is found, <code>null</code> is returned. * * @param inStream an instance of {@link ImageInputStream} for which we need to find a suitable * {@link ImageReader}. * @return a suitable instance of {@link ImageReader} or <code>null</code> if one cannot be * found. */ public static ImageReader getImageioReader(final ImageInputStream inStream) { Utilities.ensureNonNull("inStream", inStream); // get a reader inStream.mark(); final Iterator<ImageReader> readersIt = ImageIO.getImageReaders(inStream); if (!readersIt.hasNext()) { return null; } return readersIt.next(); }
/** * Look for an {@link ImageReader} instance that is able to read the provided {@link * ImageInputStream}, which must be non null. * * <p> * * <p>In case no reader is found, <code>null</code> is returned. * * @param inStream an instance of {@link ImageInputStream} for which we need to find a suitable * {@link ImageReader}. * @return a suitable instance of {@link ImageReader} or <code>null</code> if one cannot be * found. */ static ImageReader getReader(final ImageInputStream inStream) { Utilities.ensureNonNull("inStream", inStream); // get a reader inStream.mark(); final Iterator<ImageReader> readersIt = ImageIO.getImageReaders(inStream); if (!readersIt.hasNext()) { return null; } return readersIt.next(); }
public BufferedImage read(final int imageIndex, final ImageReadParam param) throws IOException { // Test if we have sips before dumping to be fail-fast if (SIPS_EXISTS_AND_EXECUTES) { File tempFile = dumpToFile(input); if (convertToPNG(tempFile)) { ImageInputStream stream = ImageIO.createImageInputStream(tempFile); Iterator<ImageReader> readers = ImageIO.getImageReaders(stream); while (readers.hasNext()) { ImageReader reader = readers.next(); reader.setInput(stream); try { return reader.read(imageIndex, param); } catch (IOException ignore) { if (stream.getFlushedPosition() <= 0) { stream.seek(0); } else { stream.close(); stream = ImageIO.createImageInputStream(tempFile); } } finally { reader.dispose(); } } } } return null; }
@Test public void testMergeWithSubIFD() throws IOException { String testFile = "/tiff/cmyk_jpeg.tif"; File output = File.createTempFile("imageiotest", ".tif"); ImageOutputStream outputStream = ImageIO.createImageOutputStream(output); InputStream inputStream1 = getClassLoaderResource(testFile).openStream(); ImageInputStream imageInput1 = ImageIO.createImageInputStream(inputStream1); InputStream inputStream2 = getClassLoaderResource(testFile).openStream(); ImageInputStream imageInput2 = ImageIO.createImageInputStream(inputStream2); ArrayList<TIFFUtilities.TIFFPage> pages = new ArrayList<>(); pages.addAll(TIFFUtilities.getPages(imageInput1)); pages.addAll(TIFFUtilities.getPages(imageInput2)); TIFFUtilities.writePages(outputStream, pages); ImageInputStream testOutput = ImageIO.createImageInputStream(output); ImageReader reader = ImageIO.getImageReaders(testOutput).next(); reader.setInput(testOutput); int numImages = reader.getNumImages(true); for (int i = 0; i < numImages; i++) { reader.read(i); } imageInput1.close(); imageInput2.close(); outputStream.close(); }
ImageReader reader = ImageIO.getImageReaders(iis).next(); reader.setInput(iis); Assert.assertEquals(3, reader.getNumImages(true));
ImageReader reader = ImageIO.getImageReaders(testOutput).next(); reader.setInput(testOutput); int numImages = reader.getNumImages(true);