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; }
/** * 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()); }
@Test public void testGetMinIndex() { ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); int num = 0; try { num = reader.getMinIndex(); } catch (IllegalStateException ignore) { } assertEquals(0, num); reader.dispose(); }
@Test public void testGetMinIndexNoInput() { ImageReader reader = createReader(); int num = 0; try { num = reader.getMinIndex(); } catch (IllegalStateException ignore) { } assertEquals(0, num); reader.dispose(); }
private 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); while (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.log(Level.WARNING, "Error reading: " + imgFile.getAbsolutePath(), e); } finally { reader.dispose(); } } throw new IOException("Not a known image file: " + imgFile.getAbsolutePath()); }
public static BigBufferedImage create(File inputFile, File tempDir, int imageType) throws IOException { ImageInputStream stream = ImageIO.createImageInputStream(inputFile); Iterator<ImageReader> readers = ImageIO.getImageReaders(stream); if (readers.hasNext()) { try { ImageReader reader = readers.next(); reader.setInput(stream, true, true); int width = reader.getWidth(reader.getMinIndex()); int height = reader.getHeight(reader.getMinIndex()); BigBufferedImage image = create(tempDir, width, height, imageType); int cores = Math.max(1, Runtime.getRuntime().availableProcessors() / 2); int block = Math.min(MAX_PIXELS_IN_MEMORY / cores / width, (int) (Math.ceil(height / (double) cores))); ExecutorService generalExecutor = Executors.newFixedThreadPool(cores); List<Callable<ImagePartLoader>> partLoaders = new ArrayList<>(); for (int y = 0; y < height; y += block) { partLoaders.add(new ImagePartLoader( y, width, Math.min(block, height - y), inputFile, image)); } generalExecutor.invokeAll(partLoaders); generalExecutor.shutdown(); return image; } catch (InterruptedException ex) { Logger.getLogger(BigBufferedImage.class.getName()).log(Level.SEVERE, null, ex); } } return null; }
private RenderedImage getImage(HtmlImage image) throws IOException { ImageReader reader = image.getImageReader(); int minIndex = reader.getMinIndex(); return reader.read(minIndex); }
import java.awt.image.BufferedImage; import java.io.IOException; import java.net.URL; import javax.imageio.ImageIO; import javax.imageio.ImageReader; public class GifBounds { /** @see http://stackoverflow.com/questions/5688104 */ public static void main(String[] args) throws IOException { search(new URL("http://i55.tinypic.com/263veb9.gif")); } public static void search(URL url) throws IOException { try { ImageReader reader = ImageIO.getImageReadersBySuffix("gif").next(); reader.setInput(ImageIO.createImageInputStream(url.openStream())); int i = reader.getMinIndex(); while (true) { BufferedImage bi = reader.read(i++); System.out.println(i + ": " + bi.getWidth() + ", " + bi.getHeight()); } } catch (IndexOutOfBoundsException e) { // ignored } } }
import java.awt.image.BufferedImage; import java.io.IOException; import java.net.URL; import javax.imageio.ImageIO; import javax.imageio.ImageReader; public class GifBounds { /** @see http://stackoverflow.com/questions/5688104 */ public static void main(String[] args) throws IOException { search(new URL("http://i55.tinypic.com/263veb9.gif")); } public static void search(URL url) throws IOException { ImageReader reader = ImageIO.getImageReadersBySuffix("gif").next(); reader.setInput(ImageIO.createImageInputStream(url.openStream())); int i = reader.getMinIndex(); int offset = i-0; int count = reader.getNumImages(true); System.out.println("Image count: " + count); for (int ii=i; ii<(count-i); ii++) { BufferedImage bi = reader.read(ii); System.out.println(ii + offset + ": " + bi.getWidth() + ", " + bi.getHeight()); } } }
/** * Ensures that the specified image index in inside the expected range. The upper limit * (exclusive) is given by <code>{@link #getNumImages getNumImages}(false)</code>. * * @param imageIndex The index to check for validity. * @return The {@code numImages} value, as an opportunist information. * @throws IndexOutOfBoundsException If the index is invalid. * @throws IOException If an error occurs reading the information from the input source. */ final int checkImageIndex(final int imageIndex) throws IOException, IndexOutOfBoundsException { assert Thread.holdsLock(this); if (reader == null) { throw new IllegalStateException(getString(ErrorKeys.NO_IMAGE_INPUT)); } final int numImages = getNumImages(false); if (imageIndex<reader.getMinIndex() || (imageIndex>=numImages && numImages>=0)) { throw new IndexOutOfBoundsException(Errors.getResources(locale).getString( ErrorKeys.ILLEGAL_ARGUMENT_$2, "imageIndex", new Integer(imageIndex))); } return numImages; }
try (ImageInputStream stream = new FileImageInputStream(screenshotFile);) { reader.setInput(stream); int width = reader.getWidth(reader.getMinIndex()); int height = reader.getHeight(reader.getMinIndex()); dimension = new Dimension(width, height); } catch (IOException e) {
int minIndex = reader.getMinIndex(); return reader.read(minIndex);
int width = reader.getWidth(reader.getMinIndex()); int height = reader.getHeight(reader.getMinIndex()); stream.flush(); stream.close();
private void populateDimension(ImageInputStream image) { try { try { Iterator<ImageReader> readers = ImageIO.getImageReaders(image); if (readers.hasNext()) { ImageReader reader = readers.next(); try { reader.setInput(image); int index = reader.getMinIndex(); put("width", reader.getWidth(index)); put("height", reader.getHeight(index)); } finally { reader.dispose(); } } } finally { image.close(); } } catch (IOException error) { errors.add(error); } }
width = reader.getWidth(reader.getMinIndex()); height = reader.getHeight(reader.getMinIndex());
public void testGetMinIndexNoInput() { ImageReader reader = createReader(); int num = 0; try { num = reader.getMinIndex(); } catch (IllegalStateException ignore) { } assertEquals(0, num); }
public void testGetMinIndex() { ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); int num = 0; try { num = reader.getMinIndex(); } catch (IllegalStateException ignore) { } assertEquals(0, num); }
@Test public void testGetMinIndex() { ImageReader reader = createReader(); TestData data = getTestData().get(0); reader.setInput(data.getInputStream()); int num = 0; try { num = reader.getMinIndex(); } catch (IllegalStateException ignore) { } assertEquals(0, num); }
@Test public void testGetMinIndexNoInput() { ImageReader reader = createReader(); int num = 0; try { num = reader.getMinIndex(); } catch (IllegalStateException ignore) { } assertEquals(0, num); }
ImageReader reader = ImageIO.getImageReadersBySuffix("gif").next(); reader.setInput(ImageIO.createImageInputStream(new FileInputStream("H:\\toonGif.gif"))); int i = reader.getMinIndex(); int numImages = reader.getNumImages(true);