如何在 Java 中保持纵横比的同时将矩形图像调整为方形图像?

How can I resize a rectangular image to a square image while maintaining aspect ratio in Java?

我需要将矩形图像 (400x600) 调整为方形图像 (600x600),同时保持原始图像的纵横比。新添加的像素需要是透明的。喜欢this.

我在 java 或 kotlin 代码中需要它。但如果那是不可能的,那么我不介意任何其他语言的解决方案。

过去 3 天我一直找不到合适的解决方案。所有类似的问题都没有帮助,因为它们在保持纵横比的同时处理放大或缩小高度和宽度。我只需要增加宽度。

试试这个代码:

public static BufferedImage increaseSize(BufferedImage input){
    //TODO: Maybe validate the input.
    //Create a new image of 600*600 pixels
    BufferedImage output=new BufferedImage(600,600,BufferedImage.TYPE_4BYTE_ABGR);
    //Get the graphics object to draw onto the image
    Graphics g=output.getGraphics();
    //This is a transparent color
    Color transparent=new Color(0f,0f,0f,0f);
    //Set the transparent color as drawing color
    g.setColor(transparent);
    //Make the whole image transparent
    g.fillRect(0,0,600,600);
    //Draw the input image at P(100/0), so there are transparent margins
    g.drawImage(input,100,0,null);
    //Release the Graphics object
    g.dispose();
    //Return the 600*600 image
    return output;
}

举个例子: 左边是之前的图片,右边是转换后的效果