Как изменить размер прямоугольного angular изображения на квадратное, сохранив соотношение сторон Java? - PullRequest
1 голос
/ 11 июля 2020

Мне нужно изменить размер прямоугольных angular изображений (400x600) на квадратные изображения (600x600), сохраняя при этом соотношение сторон исходного изображения. Новые добавленные пиксели должны быть прозрачными. Например, this.

Мне это нужно в коде java или kotlin. Но если это невозможно, я не возражаю против решения на любом другом языке.

Я не мог найти подходящего решения в течение последних 3 дней. Все подобные вопросы совершенно не помогли, потому что они касаются либо увеличения, либо уменьшения как высоты, так и ширины при сохранении соотношения сторон. Мне нужно увеличить только ширину.

1 Ответ

5 голосов
/ 11 июля 2020

Попробуйте этот код:

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;
}

Вот пример: пример Слева вы можете видеть изображение до, после преобразования вы можете видеть эффект справа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...