Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ImageInputStream iis = ImageIO.createImageInputStream(file);
- Iterator<ImageReader> imageReaders = ImageIO.getImageReaders(iis);
- while (imageReaders.hasNext()) {
- ImageReader reader = (ImageReader) imageReaders.next();
- System.out.printf("formatName: %s%n", reader.getFormatName());
- }
- // URLConnection.guessContentTypeFromStream only needs the first 12 bytes, but
- // just to be safe from future java api enhancements, we'll use a larger number
- int pushbackLimit = 100;
- InputStream urlStream = url.openStream();
- PushbackInputStream pushUrlStream = new PushbackInputStream(urlStream, pushbackLimit);
- byte [] firstBytes = new byte[pushbackLimit];
- // download the first initial bytes into a byte array, which we will later pass to
- // URLConnection.guessContentTypeFromStream
- pushUrlStream.read(firstBytes);
- // push the bytes back onto the PushbackInputStream so that the stream can be read
- // by ImageIO reader in its entirety
- pushUrlStream.unread(firstBytes);
- String imageType = null;
- // Pass the initial bytes to URLConnection.guessContentTypeFromStream in the form of a
- // ByteArrayInputStream, which is mark supported.
- ByteArrayInputStream bais = new ByteArrayInputStream(firstBytes);
- String mimeType = URLConnection.guessContentTypeFromStream(bais);
- if (mimeType.startsWith("image/"))
- imageType = mimeType.substring("image/".length());
- // else handle failure here
- // read in image
- BufferedImage inputImage = ImageIO.read(pushUrlStream);
- public static BufferedImageWrapper getImageAndTypeFromInputStream(InputStream is) {
- String format = null;
- BufferedImage bufferedimage = null;
- try (ImageInputStream iis = ImageIO.createImageInputStream(is);) {
- Iterator<ImageReader> readers = ImageIO.getImageReaders(iis);
- if (readers.hasNext()) {
- ImageReader reader = readers.next();
- format = reader.getFormatName();
- reader.setInput(iis);
- bufferedimage = reader.read(0);
- }
- } catch (IOException e) {
- logger.error("ERROR DETERMINING IMAGE TYPE!!!", e);
- }
- return new BufferedImageWrapper(format, bufferedimage);
- }
- public static class BufferedImageWrapper {
- private final String imageType;
- private final BufferedImage bufferedimage;
- /**
- * Constructor
- *
- * @param imageType
- * @param bufferedimage
- */
- public BufferedImageWrapper(String imageType, BufferedImage bufferedimage) {
- this.imageType = imageType;
- this.bufferedimage = bufferedimage;
- }
- public String getImageType() {
- return imageType;
- }
- public BufferedImage getBufferedimage() {
- return bufferedimage;
- }
- }
- public String getImageFileExtFromUrl(URL urlObject) throws URISyntaxException, IOException{
- System.out.println("IN DOWNLOAD FILE FROM URL METHOD");
- String tmpFolder = System.getProperty("java.io.tmpdir");
- String tmpFileStr = tmpFolder + "/" + new Date().getTime();
- Files.copy(urlObject.openStream(), Paths.get(tmpFileStr), StandardCopyOption.REPLACE_EXISTING);
- File download = new File(tmpFileStr);
- System.out.println("FILE DOWNLOAD EXISTS: " + download.exists() );
- try{
- ImageInputStream iis = ImageIO.createImageInputStream(download);
- Iterator<ImageReader> iter = ImageIO.getImageReaders(iis);
- ImageReader reader = iter.next();
- String formatName = reader.getFormatName();
- System.out.println("FOUND IMAGE FORMAT :" + formatName);
- iis.close();
- return formatName;
- }catch(Exception e){
- e.printStackTrace();
- }finally{
- Files.delete(Paths.get(tmpFileStr));
- }
- return null;
- }
Add Comment
Please, Sign In to add comment