Java image resize, maintain aspect ratio

前端 未结 11 1477
盖世英雄少女心
盖世英雄少女心 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:05

    This is my solution:

    /*
    Change dimension of Image
    */
    public static Image resizeImage(Image image, int scaledWidth, int scaledHeight, boolean preserveRatio) {  
    
        if (preserveRatio) { 
            double imageHeight = image.getHeight();
            double imageWidth = image.getWidth();
    
            if (imageHeight/scaledHeight > imageWidth/scaledWidth) {
                scaledWidth = (int) (scaledHeight * imageWidth / imageHeight);
            } else {
                scaledHeight = (int) (scaledWidth * imageHeight / imageWidth);
            }        
        }                   
        BufferedImage inputBufImage = SwingFXUtils.fromFXImage(image, null);     
        // creates output image
        BufferedImage outputBufImage = new BufferedImage(scaledWidth, scaledHeight, inputBufImage.getType());       
        // scales the input image to the output image
        Graphics2D g2d = outputBufImage.createGraphics();
        g2d.drawImage(inputBufImage, 0, 0, scaledWidth, scaledHeight, null);
        g2d.dispose();      
        return SwingFXUtils.toFXImage(outputBufImage, null);
    }
    

提交回复
热议问题