# Punkt in Image auf Transparenz prüfen



## Guest (21. Mai 2008)

Moin 

Ich würd gern einen angeklickten Punkt in einem Image auf Transparenz prüfen. Das Prüfen auf Transparenz wäre
wohl weniger das Problem, Quaxli hat in seinem Tut (soll ich den Code hier posten?) ja ein schönes Beispiel drin. 
Mein Problem: Image kann kein getRGB(int, int). 
Meine Lösung wäre nach 1 Stunde Forumssuche wäre ein Codeschnipsel von Hobbit, der das Image einfach in ein
neues BufferedImage reinzeichnet:

```
public BufferedImage getBuffImg(Image image){
    BufferedImage bufimage= new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); 
    Graphics2D g2D = bufimage.createGraphics(); 
    g2D.drawImage(image, 0, 0, null); 
    g2D.dispose()
    return bufimage;
}
```
Aber das kost doch alles Zeit , das Bild kann ausserdem durchaus 2000*1000 pxl gross sein, und mir erscheint die
Lösung nicht so performant.

Meine Frage: Muss ich den Umweg über ein BufferedImage gehen oder gibt es einen schnelleren, und eleganteren Weg?

Danke schonmal


----------



## Lulumann6 (21. Mai 2008)

benutz doch einfach generell bufferedimage, dann brauchst du es auch nicht ständig zu casten.


----------



## Gast (21. Mai 2008)

Hm hätt ich gern gemacht, aber ich bekomm das Image aus getScaledInstance von einem BufferedImage.


----------



## der JoJo (21. Mai 2008)

prüf mal mit instanceof bei getScaledInstance ob das nicht auch ein BufferedImmage ist


----------



## Marco13 (21. Mai 2008)

Selbst wenn man bei getScaledInstance ein BufferedImage bekommt, ist noch lange nicht gesagt, dass das bei jeder Implementierung so sein wird. Falls du das Bild ursprünglich als BufferedImage vorliegen hast, solltest du in Erwägung ziehen, das Bild nicht mit getScaledInstance zu skalieren, sondern manuell ...
http://today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html
... da gilt dann das Persil-Prinzip: "Da weiß man, was man hat"


----------



## Gast (21. Mai 2008)

Also ich hab die API ja nicht auswenig im Kopf, aber ein classcast nach
BufferedImage warf ne Classcastexception, deswegen glaub ich nicht 
das das ein BufferedImage ist. Was du bestimmt meinst ist getSubImage, 
das gibt tatsächlich ein BufferedImage zurück.


----------



## Gast (21. Mai 2008)

Danke, Marco, damit komm ich weiter, besser gehts glaub ich nicht mehr


----------

