Я пытаюсь написать небольшой метод, который принимает изображение BufferedImage
и новую ширину и высоту и масштабирует изображение, сохраняя соотношение сторон, добавляя прозрачную границу влево/вправо или сверху/снизу в зависимости от изображения. Масштабирование работает отлично, но для жизни меня я не могу получить границу прозрачной.Как масштабировать изображение Graphics2D с прозрачным дополнением
До сих пор у меня есть following code posted on 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
фон прозрачным и рисовать старое изображение над новым? Спасибо за любую помощь.
Edit:
Оказалось, что проблема у меня была в том, что я пытаюсь создать прозрачный цвет с изображением JPEG. JPEG не поддерживают прозрачность. Duh.
Вы пытались установить альфа-компонент с помощью ['new Color (int r, int g, int b, int a)'] (http://docs.oracle.com/ JavaSE/7/документы/API/Java/AWT/Color.html # Цвет (интермедиат,% 20int,% 20int,% 20int))? –
Я уверен, что это одна из вещей, которые я пробовал @ Eng.Fouad.Если вы можете быть более конкретным, я попробую. – Gray
Что-то вроде 'new Color (0, 0, 0, 0)'. –