weiß = transparent

Status
Nicht offen für weitere Antworten.
I

ich²

Gast
Hallo Forum,

ich möchte den weißen Hintergrund (ja, er ist wirklich komplett weiß (255, 255, 255)) eines png-Bildes transparent haben. Dazu habe ich mir folgende Methode geschrieben:

Code:
	public static void main(String[] args) throws IOException {
		
		BufferedImage img = ImageIO.read(new File("C:/blub.png"));
		for (int i = 0; i < img.getWidth(); i++) {
			for (int j = 0; j < img.getHeight(); j++) {
				if (img.getRGB(i, j) == new Color(255, 255, 255).getRGB()) {
			//		System.out.println("blob");
					img.setRGB(i, j, new Color(255, 255, 255, 0).getRGB());
				}
			}
		}
		ImageIO.write(img, "png", new File("C:/blub.png"));
	}

leider ist das Bild nach dem Speichern immernoch mit einem weißen Hintergrund versehen. Gebe ich eine andere Farbe an, funktioniert alles ohne Probleme. Weiß jemand woran das liegt? Danke!

mfg

ich²
 

Marco13

Top Contributor
Es ist erstmal nicht gesagt, dass das BufferedImage, das du dort bekommst, einen Alpha-Kanal hat. Vermutlich hat es keinen. (Siehe BufferedImage.TYPE_INT_RGB vs. Siehe BufferedImage.TYPE_INT_ARGB). Man kann vermutlich das ImageIO so konfigurieren, dass es ein BufferedImage mit Alphakanal auspuckt. Zum Testen(!) könntest du aber auch sowas machen wie
Code:
public static void main(String[] args) throws IOException {
      
      BufferedImage img = ImageIO.read(new File("C:/blub.png"));
      BufferedImage img2 = new BufferedImage(img.getWidth(), img.getHeight(), BufferedImage.TYPE_INT_ARGB);
      int white = new Color(255, 255, 255).getRGB();
      int transparent = new Color(255, 255, 255, 0).getRGB();
      for (int i = 0; i < img2.getWidth(); i++) {
         for (int j = 0; j < img2.getHeight(); j++) {
            if (img.getRGB(i, j) == white) {
         //      System.out.println("blob");
               img2.setRGB(i, j, transparent);
            }
            else
            {
               img2.setRGB(i, j, img.getRGB(i,j));
            }
         }
      }
      ImageIO.write(img2, "png", new File("C:/blub.png"));
   }
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben