Search code examples
javaimageresizeim4java

How to resize a buffered Image using im4java and get the output as bufferedImage?


When I am trying to resize a image i am getting an exception saying "java.lang.IllegalStateException: no ImageReader for given format".

 public static void main(String... args) throws Exception {   
        IMOperation op = new IMOperation();
        op.addImage();                       
        op.resize(350)
        op.addImage()               
        BufferedImage images = ImageIO.read(new File("image.jpg")); 

        // set up command
        ConvertCmd convert = new ConvertCmd();
        Stream2BufferedImage s2b = new Stream2BufferedImage();
        convert.setOutputConsumer(s2b);

        // run command and extract BufferedImage from OutputConsumer
        convert.run(op,images);
        BufferedImage img = s2b.getImage();
    }

Solution

  • BufferedImage images = ImageIO.read(new File("image.jpg")); 
        int type = (images.getTransparency() == Transparency.OPAQUE)
                ? BufferedImage.TYPE_INT_RGB
                : Buffenter code hereeredImage.TYPE_INT_ARGB;
        BufferedImage finalImage = images;
        int w = 40;
        int h = 40;
        BufferedImage resizedImage = new BufferedImage(w, h, type);
        Graphics2D g2 = resizedImage.createGraphics();
        g2.drawImage(finalImage, 0, 0, null);
        g2.dispose();
        finalImage = resizedImage;
    

    This will resize bufferedImage to given dimensions and returns new bufferedImage.