0

I have a requirement of reading the Resolution of any file type in my spring boot application. Is there any way to do this? I search a lot but didn't get any specific answer. could you please help me with this,

Thanks in Advance

My Java code:-

    public String getFileInfo(MultipartFile file) throws Exception {
                    BufferedOutputStream stream = null;
                    File model = new File();
                    String extension;
                    UUID uuid = null;
                    try {
                        String fileName = file.getOriginalFilename();
                        
                        String basePath = documentBase + java.io.File.separator + accountId;
                     
                       
                        Long fileSize = file.getSize();
                        uuid = UUID.randomUUID();
                        this.uploadFilePath = basePath + java.io.File.separator + uuid;
            
                        // Make sure file has an extension and the extension is allowed
                        int i = fileName.lastIndexOf('.');
                        
        
        String[] imageFileExtensions = {"jpg", "png", "gif", "JPG", "PNG", "GIF", "BMP", "bmp", "Webp", "webp"};
                    if (Arrays.asList(imageFileExtensions).contains(extension)) {
                        java.io.File uploadedFile = new java.io.File(this.uploadFilePath);
                        Metadata metadata = ImageMetadataReader.readMetadata(uploadedFile);
                        Integer imageWidth = null;
                        Integer imageHeight = null;
        
                        if (metadata.containsDirectoryOfType(PngDirectory.class)) {
                            PngDirectory directory = metadata.getFirstDirectoryOfType(PngDirectory.class);
                            imageWidth = directory.getInteger(PngDirectory.TAG_IMAGE_WIDTH);
                            imageHeight = directory.getInteger(PngDirectory.TAG_IMAGE_HEIGHT);
                        } else if (metadata.containsDirectoryOfType(GifHeaderDirectory.class)) {
                            GifHeaderDirectory directory = metadata.getFirstDirectoryOfType(GifHeaderDirectory.class);
                            imageWidth = directory.getInteger(GifHeaderDirectory.TAG_IMAGE_WIDTH);
                            imageHeight = directory.getInteger(GifHeaderDirectory.TAG_IMAGE_HEIGHT);
                        } else if (metadata.containsDirectoryOfType(JpegDirectory.class)) {
                            JpegDirectory directory = metadata.getFirstDirectoryOfType(JpegDirectory.class);
                            imageWidth = directory.getInteger(JpegDirectory.TAG_IMAGE_WIDTH);
                            imageHeight = directory.getInteger(JpegDirectory.TAG_IMAGE_HEIGHT);
                        } else if (metadata.containsDirectoryOfType(BmpHeaderDirectory.class)) {
                          BmpHeaderDirectory directory = metadata.getFirstDirectoryOfType(BmpHeaderDirectory.class);
                          imageWidth = directory.getInteger(BmpHeaderDirectory.TAG_IMAGE_WIDTH);
                          imageHeight = directory.getInteger(BmpHeaderDirectory.TAG_IMAGE_HEIGHT);
                        }else if (metadata.containsDirectoryOfType(WebpDirectory.class)) {
                          WebpDirectory directory = metadata.getFirstDirectoryOfType(WebpDirectory.class);
                          imageWidth = directory.getInteger(WebpDirectory.TAG_IMAGE_WIDTH);
                          imageHeight = directory.getInteger(WebpDirectory.TAG_IMAGE_HEIGHT);
                        }
                        if (imageWidth != null && imageHeight != null) {
                            model.setDimensionX(imageWidth);
                            model.setDimensionY(imageHeight);
                        }
    model.setResolution(?)
                    }
/**



**********Some code here*********


**/

model.setResolution(?) input on this

Yogesh
  • 1
  • 1

1 Answers1

0

Check out this answer using BufferedImage

I would also check on type with getType to make sure it worked out BufferedImage.TYPE_CUSTOM. In general, any image for any scenario is quite vague requirement

NeatNerd
  • 2,305
  • 3
  • 26
  • 49