Java image resize, maintain aspect ratio

前端 未结 11 1470
盖世英雄少女心
盖世英雄少女心 2020-11-28 19:38

I have an image which I resize:

if((width != null) || (height != null))
{
    try{
        // scale image on disk
        BufferedImage originalImage = ImageI         


        
11条回答
  •  自闭症患者
    2020-11-28 20:00

    Load image:

    BufferedImage bufferedImage = ImageIO.read(file);   
    

    Resize it:

    private BufferedImage resizeAndCrop(BufferedImage bufferedImage, Integer width, Integer height) {
    
        Mode mode = (double) width / (double) height >= (double) bufferedImage.getWidth() / (double) bufferedImage.getHeight() ? Scalr.Mode.FIT_TO_WIDTH
                : Scalr.Mode.FIT_TO_HEIGHT;
    
        bufferedImage = Scalr.resize(bufferedImage, Scalr.Method.ULTRA_QUALITY, mode, width, height);
    
        int x = 0;
        int y = 0;
    
        if (mode == Scalr.Mode.FIT_TO_WIDTH) {
            y = (bufferedImage.getHeight() - height) / 2;
        } else if (mode == Scalr.Mode.FIT_TO_HEIGHT) {
            x = (bufferedImage.getWidth() - width) / 2;
        }
    
        bufferedImage = Scalr.crop(bufferedImage, x, y, width, height);
    
        return bufferedImage;
    }
    

    Using Scalr library:

    
        org.imgscalr
        imgscalr-lib
        4.2
    
    

提交回复
热议问题