1package org.robolectric.shadows; 2 3import android.graphics.Point; 4import java.io.IOException; 5import java.io.InputStream; 6import java.util.Iterator; 7import javax.imageio.ImageIO; 8import javax.imageio.ImageReader; 9import javax.imageio.stream.ImageInputStream; 10 11public class ImageUtil { 12 private static boolean initialized; 13 14 public static Point getImageSizeFromStream(InputStream is) { 15 if (!initialized) { 16 // Stops ImageIO from creating temp files when reading images 17 // from input stream. 18 ImageIO.setUseCache(false); 19 initialized = true; 20 } 21 22 try { 23 ImageInputStream imageStream = ImageIO.createImageInputStream(is); 24 Iterator<ImageReader> readers = ImageIO.getImageReaders(imageStream); 25 if (!readers.hasNext()) return null; 26 27 ImageReader reader = readers.next(); 28 try { 29 reader.setInput(imageStream); 30 return new Point(reader.getWidth(0), reader.getHeight(0)); 31 } finally { 32 reader.dispose(); 33 } 34 } catch (IOException e) { 35 throw new RuntimeException(e); 36 } 37 } 38} 39