Refine search
try(ImageInputStream in = ImageIO.createImageInputStream(resourceFile)){ final Iterator<ImageReader> readers = ImageIO.getImageReaders(in); if (readers.hasNext()) { ImageReader reader = readers.next(); try { reader.setInput(in); return new Dimension(reader.getWidth(0), reader.getHeight(0)); } finally { reader.dispose(); } } }
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); } }
@Override public RenderedImage readFrom( Class<RenderedImage> type, Type genericType, Annotation annotations[], MediaType mediaType, MultivaluedMap<String, String> httpHeaders, InputStream entityStream) throws IOException { if (IMAGE_MEDIA_TYPE.isCompatible(mediaType)) { Iterator<ImageReader> readers = ImageIO.getImageReadersByMIMEType(mediaType.toString()); if (!readers.hasNext()) { throw new IOException("The image-based media type " + mediaType + "is not supported for reading"); } ImageReader reader = readers.next(); ImageInputStream in = ImageIO.createImageInputStream(entityStream); reader.setInput(in, true, true); BufferedImage bi = reader.read(0, reader.getDefaultReadParam()); in.close(); reader.dispose(); return bi; } else { return ImageIO.read(entityStream); } }
@Override public RenderedImage readFrom( Class<RenderedImage> type, Type genericType, Annotation annotations[], MediaType mediaType, MultivaluedMap<String, String> httpHeaders, InputStream entityStream) throws IOException { if (IMAGE_MEDIA_TYPE.isCompatible(mediaType)) { Iterator<ImageReader> readers = ImageIO.getImageReadersByMIMEType(mediaType.toString()); if (!readers.hasNext()) { throw new IOException("The image-based media type " + mediaType + "is not supported for reading"); } ImageReader reader = readers.next(); ImageInputStream in = ImageIO.createImageInputStream(entityStream); reader.setInput(in, true, true); BufferedImage bi = reader.read(0, reader.getDefaultReadParam()); in.close(); reader.dispose(); return bi; } else { return ImageIO.read(entityStream); } }
/** * Gets image dimensions for given file * @param imgFile image file * @return dimensions of image * @throws IOException if the file is not a known image */ public static Dimension getImageDimension(File imgFile) throws IOException { int pos = imgFile.getName().lastIndexOf("."); if (pos == -1) throw new IOException("No extension for file: " + imgFile.getAbsolutePath()); String suffix = imgFile.getName().substring(pos + 1); Iterator<ImageReader> iter = ImageIO.getImageReadersBySuffix(suffix); if (iter.hasNext()) { ImageReader reader = iter.next(); try { ImageInputStream stream = new FileImageInputStream(imgFile); reader.setInput(stream); int width = reader.getWidth(reader.getMinIndex()); int height = reader.getHeight(reader.getMinIndex()); return new Dimension(width, height); } catch (IOException e) { log.warn("Error reading: " + imgFile.getAbsolutePath(), e); } finally { reader.dispose(); } } throw new IOException("Not a known image file: " + imgFile.getAbsolutePath()); }
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(); } }
private Dimension getImageDim(final String path) { Dimension result = null; String suffix = this.getFileSuffix(path); Iterator<ImageReader> iter = ImageIO.getImageReadersBySuffix(suffix); if (iter.hasNext()) { ImageReader reader = iter.next(); try { ImageInputStream stream = new FileImageInputStream(new File(path)); reader.setInput(stream); int width = reader.getWidth(reader.getMinIndex()); int height = reader.getHeight(reader.getMinIndex()); result = new Dimension(width, height); } catch (IOException e) { log(e.getMessage()); } finally { reader.dispose(); } } else { log("No reader found for given format: " + suffix)); } return result; }
@Test public void testNotBadCaching() throws IOException { T reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); BufferedImage one = reader.read(0); BufferedImage two = reader.read(0); assertNotSame("Multiple reads return same (mutable) image", one, two); one.setRGB(0, 0, Color.BLUE.getRGB()); two.setRGB(0, 0, Color.RED.getRGB()); assertTrue(one.getRGB(0, 0) != two.getRGB(0, 0)); reader.dispose(); }
@Test public void testReRead() throws IOException { ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream(), false); // Explicitly allow repositioning, even though it's the default BufferedImage first = reader.read(0); assertNotNull(first); BufferedImage second = reader.read(0); assertNotNull(second); // TODO: These images should be exactly the same, but there's no equals for images assertEquals(first.getType(), second.getType()); assertEquals(first.getWidth(), second.getWidth()); assertEquals(first.getHeight(), second.getHeight()); reader.dispose(); }
@SuppressWarnings("ConstantConditions") @Test public void testSetDestinationOffsetNull() throws IOException { final ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); ImageReadParam param = reader.getDefaultReadParam(); try { param.setDestinationOffset(null); fail("Null offset not allowed"); } catch (IllegalArgumentException e) { assertTrue(e.getMessage().toLowerCase().contains("offset")); } reader.dispose(); }