Wie mache ich ein geladenes Image halbtransparent?

Zhoragh

Mitglied
Hallo,

ich möchte gern ein von mir erstelltes/geladenes BufferedImage nachträglich halbtransparent machen.
Eine Lösung von mir war es Pixelweise die Farbe auszulesen und diese durch eine halbtransparente Farbe zu ersetzen.
Zwar führte das zum gewünschten Ergebniss aber wie man schon erahnen kann, dauert das ziemlich lang bei einem 600x800 Image.

Falls mir jemand helfen kann wäre ich sehr dankbar.
 
Ich hab das ganze mit einem Filter wie folgt implementiert:

Code:
public class ...
{
  //Filter der die Farbe transparent macht
  private ImageFilter   transFilter = new TransparentFilter();
  //ImageProducer der das Image erzeugt
  private ImageProducer imageProducer;
  ...

  private void ...
  {
     ...
     imageProducer = new FilteredImageSourc(mapLayerTwoImage.getSource(),
                                                                   transFilter);
     mapLayerTwoDrawImage = createImage(imageProducer);
     ...
  }
  public void paint (Graphics g)
  {
     ...
     g.drawImage(mapLayerTwoDrawImage,0,0,this); //<-- an dieser Stelle tritt ein Nullpointer auf 
     //FEHLER : at sun.awt.image.OffScreenImageSource.sendPixels(OffScreenImageSource.java:102)
    //mapLayerTwoDrawImage beinhaltet ein sun.awt.windows.WImage@4d5 anstatt ein BufferImage
     ...
  }
...
}

Wie der Code schon zeigt hab ich das Problem das ich kein BufferedImage geliefert bekomme sondern ein WImage und dadurch ein Nulpointer verursache.

kann mir jemand sagen, wie ich dies vermeiden kann.

Dank Zhoragh
 
Zuletzt bearbeitet:
Zurück