Guest User

Untitled

a guest
Dec 11th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.56 KB | None | 0 0
  1. ImageInputStream iis = ImageIO.createImageInputStream(file);
  2.  
  3. Iterator<ImageReader> imageReaders = ImageIO.getImageReaders(iis);
  4.  
  5. while (imageReaders.hasNext()) {
  6. ImageReader reader = (ImageReader) imageReaders.next();
  7. System.out.printf("formatName: %s%n", reader.getFormatName());
  8. }
  9.  
  10. // URLConnection.guessContentTypeFromStream only needs the first 12 bytes, but
  11. // just to be safe from future java api enhancements, we'll use a larger number
  12. int pushbackLimit = 100;
  13. InputStream urlStream = url.openStream();
  14. PushbackInputStream pushUrlStream = new PushbackInputStream(urlStream, pushbackLimit);
  15. byte [] firstBytes = new byte[pushbackLimit];
  16. // download the first initial bytes into a byte array, which we will later pass to
  17. // URLConnection.guessContentTypeFromStream
  18. pushUrlStream.read(firstBytes);
  19. // push the bytes back onto the PushbackInputStream so that the stream can be read
  20. // by ImageIO reader in its entirety
  21. pushUrlStream.unread(firstBytes);
  22.  
  23. String imageType = null;
  24. // Pass the initial bytes to URLConnection.guessContentTypeFromStream in the form of a
  25. // ByteArrayInputStream, which is mark supported.
  26. ByteArrayInputStream bais = new ByteArrayInputStream(firstBytes);
  27. String mimeType = URLConnection.guessContentTypeFromStream(bais);
  28. if (mimeType.startsWith("image/"))
  29. imageType = mimeType.substring("image/".length());
  30. // else handle failure here
  31.  
  32. // read in image
  33. BufferedImage inputImage = ImageIO.read(pushUrlStream);
  34.  
  35. public static BufferedImageWrapper getImageAndTypeFromInputStream(InputStream is) {
  36.  
  37. String format = null;
  38. BufferedImage bufferedimage = null;
  39. try (ImageInputStream iis = ImageIO.createImageInputStream(is);) {
  40.  
  41. Iterator<ImageReader> readers = ImageIO.getImageReaders(iis);
  42.  
  43. if (readers.hasNext()) {
  44.  
  45. ImageReader reader = readers.next();
  46. format = reader.getFormatName();
  47. reader.setInput(iis);
  48. bufferedimage = reader.read(0);
  49. }
  50. } catch (IOException e) {
  51. logger.error("ERROR DETERMINING IMAGE TYPE!!!", e);
  52. }
  53.  
  54. return new BufferedImageWrapper(format, bufferedimage);
  55. }
  56.  
  57. public static class BufferedImageWrapper {
  58.  
  59. private final String imageType;
  60. private final BufferedImage bufferedimage;
  61.  
  62. /**
  63. * Constructor
  64. *
  65. * @param imageType
  66. * @param bufferedimage
  67. */
  68. public BufferedImageWrapper(String imageType, BufferedImage bufferedimage) {
  69. this.imageType = imageType;
  70. this.bufferedimage = bufferedimage;
  71. }
  72.  
  73. public String getImageType() {
  74.  
  75. return imageType;
  76. }
  77.  
  78. public BufferedImage getBufferedimage() {
  79.  
  80. return bufferedimage;
  81. }
  82.  
  83. }
  84.  
  85. public String getImageFileExtFromUrl(URL urlObject) throws URISyntaxException, IOException{
  86. System.out.println("IN DOWNLOAD FILE FROM URL METHOD");
  87. String tmpFolder = System.getProperty("java.io.tmpdir");
  88. String tmpFileStr = tmpFolder + "/" + new Date().getTime();
  89. Files.copy(urlObject.openStream(), Paths.get(tmpFileStr), StandardCopyOption.REPLACE_EXISTING);
  90. File download = new File(tmpFileStr);
  91. System.out.println("FILE DOWNLOAD EXISTS: " + download.exists() );
  92. try{
  93. ImageInputStream iis = ImageIO.createImageInputStream(download);
  94. Iterator<ImageReader> iter = ImageIO.getImageReaders(iis);
  95.  
  96. ImageReader reader = iter.next();
  97. String formatName = reader.getFormatName();
  98. System.out.println("FOUND IMAGE FORMAT :" + formatName);
  99. iis.close();
  100. return formatName;
  101. }catch(Exception e){
  102. e.printStackTrace();
  103. }finally{
  104. Files.delete(Paths.get(tmpFileStr));
  105. }
  106. return null;
  107.  
  108.  
  109.  
  110. }
Add Comment
Please, Sign In to add comment