Resize image while keeping aspect ratio in Java

后端 未结 7 888
清歌不尽
清歌不尽 2020-12-13 10:58

im trying to resize bufferdImage in memory in java but to keep the aspect ratio of the image im have something like this but this is not good

int w = pictu         


        
7条回答
  •  悲哀的现实
    2020-12-13 11:12

    private static BufferedImage resize(BufferedImage img, int width, int height) {
    
            double scalex = (double) width / img.getWidth();
            double scaley = (double) height / img.getHeight();
            double scale = Math.min(scalex, scaley);
    
            int w = (int) (img.getWidth() * scale);
            int h = (int) (img.getHeight() * scale);
    
            Image tmp = img.getScaledInstance(w, h, Image.SCALE_SMOOTH);
    
            BufferedImage resized = new BufferedImage(w, h, img.getType());
            Graphics2D g2d = resized.createGraphics();
            g2d.drawImage(tmp, 0, 0, null);
            g2d.dispose();
    
            return resized;
        }
    

提交回复
热议问题