package org.robolectric.shadows; import android.graphics.Point; import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.stream.ImageInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; public class ImageUtil { private static boolean initialized; 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); } } }