1

how can I get a BufferedImage from an S3Object? I miss something with the ImageIO reader I guess?! This is what I tried. It throws a NullPointerException:

S3Object o = s3Client.getObject("testbucket", "test.jpeg");
logger.debug(o.getObjectMetadata().getContentLength()); // 25890
logger.debug(o.getObjectMetadata().getContentType()); // image/jpeg

ImageInputStream iin = ImageIO.createImageInputStream(o.getObjectContent());
BufferedImage img = ImageIO.read(iin);  

logger.debug(img.getHeight()); // NullPointerException

Thanks for helping out!

Mirko
  • 331
  • 2
  • 6
  • 17
  • 1
    Perhaps the answer here helps? http://stackoverflow.com/questions/5130553/imageio-createimageinputstream-keeps-returning-null – leonbloy May 27 '13 at 14:31
  • Thanks! Seems I have a similar problem, but the suggested solution doesn't work for me neither. Here's an alternative way from the related post (doesn't work): `ImageInputStream iis = ImageIO.createImageInputStream(o.getObjectContent()); Iterator readers = ImageIO.getImageReaders(iis); ImageReader reader = (ImageReader) readers.next(); java.util.NoSuchElementException here reader.setInput(iis, false); BufferedImage img = reader.read(0);` – Mirko May 27 '13 at 15:14
  • Update: I solved it. The problem was: the images get some wrong format or something when I uploaded them. They were not proper jpeg as expected (not sure yet what exactly is wrong with the files). This causes ImageIO.read() to fail without an error apparently. I could make it work with other test images. – Mirko May 27 '13 at 15:25

0 Answers0