So skalieren Sie ein Graphics2D-Bild mit transparenter Polsterung

Ich versuche eine kleine Methode zu schreiben, die a benötigtBufferedImage Bild und eine neue Breite und Höhe und skaliert das Bild unter Beibehaltung des Seitenverhältnisses, indem je nach Bild ein transparenter Rand links / rechts oder oben / unten hinzugefügt wird. Die Skalierung funktioniert gut, aber für mein Leben kann ich die Grenze nicht transparent machen.

Soweit habe ich dasDer folgende Code wurde auf pastebin.com gepostet Das macht die Skalierung gut.

Ich habe viele Handbücher und andere SO-Fragen ohne Erfolg gelesen. Ich habe zahlreiche Permutationen von Füllungen, zusammengesetzten Typen, Bildtypen usw. versucht. Manchmal bekomme ich einen blauen Hintergrund, manchmal weiß, aber es scheint nie transparent zu sein.

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;

Irgendeine Idee, welche Graphics2D-Aufrufe ich machen muss, um die zu habenColor.WHITE Hintergrund transparent seinund Das alte Bild über das neue ziehen? Danke für jede Hilfe.

Bearbeiten:

Es stellte sich heraus, dass ich das Problem hatte, eine transparente Farbe mit einem JPEG-Bild zu erzeugen. JPEGs unterstützen keine Transparenz. Duh.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage