Как масштабировать изображение Graphics2D с прозрачным заполнением
Я пытаюсь написать небольшой метод, который принимаетBufferedImage
изображения и новые ширина и высота и масштабирует изображение, сохраняя пропорции, добавляя прозрачную границу слева / справа или сверху / снизу в зависимости от изображения. Масштабирование работает хорошо, но для жизни я могучтобы граница была прозрачной.
Пока у меня естьследующий код размещен на pastebin.com что делает масштабирование хорошо.
Я прочитал много руководств и других вопросов, но безрезультатно. Я'мы пробовали многочисленные комбинации заливок, составных типов, типов изображений и т. д. Иногда я получаю синий фон, иногда белый, но он никогда не кажется прозрачным.
BufferedImage newImg = new BufferedImage(newWidth, newHeight, img.getType());
Graphics2D g = newImg.createGraphics();
g.setColor(Color.WHITE);
g.fillRect(0, 0, newWidth, newHeight);
g.drawImage(img, x, y, x + scaledWidth, y + scaledHeight, 0, 0,
currentWidth, currentHeight, Color.WHITE, null);
g.dispose();
return newImg;
Любая идея, что Graphics2D вызов мне нужно сделать, чтобы иметьColor.WHITE
фон быть прозрачныма также нарисовать старое изображение поверх нового? Спасибо за любую помощь.
Редактировать:
Оказалось, что проблема у меня была в том, что я пытался создать прозрачный цвет с изображением JPEG. JPEG не поддерживает прозрачность. Duh.