package com.n11.imic; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.imageio.IIOException; import javax.imageio.ImageIO; import javax.imageio.ImageReader; import javax.imageio.stream.ImageInputStream; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; public class JpegReader { private static final Logger LOGGER = LoggerFactory.getLogger(JpegReader.class); public BufferedImage readImage(InputStream imageData) throws IOException { ImageInputStream stream = ImageIO.createImageInputStream(imageData); for (Iterator<ImageReader> iterator = ImageIO.getImageReaders(stream); iterator.hasNext();) { ImageReader imageReader = iterator.next(); imageReader.setInput(stream); try { BufferedImage image = imageReader.read(0); stream.close(); return image; } catch (IIOException e) { LOGGER.error("Reading stream failed, attempting to read with next JPEG reader.", e); } } return null; } }