SWT Dateinamen von Imagefile herausfinden

Status
Nicht offen für weitere Antworten.

Miriam84

Mitglied
Hallo,

ist es möglich den Dateinamen einer Bilddatei zu erhalten welche man z.B. für ein Label mittels folgendem Code gesetzt hat. Ich programmiere eine eclipse RCP anwendung uns arbeite somiit mit SWT und JFace

Java:
Image locked= Activator.getImageDescriptor("icons/locked.gif").createImage();
label.setImage(locked)

Ich hätte also gern "locked.gif" oder meinetwegen auch nur "locked" zurück.
Wie ich an das Bild komme weiß ich aber nicht wie ich von dem Image zurück zum dateinamen komme. Gibts da ne Möglichkeit?
 
Da gibt's keine Möglichkeit. Das liegt vor allem daran, dass ein Image gar keinen Dateinamen hat, lediglich die Quelle aus der das Image erzeugt wird hat einen Namen. Das Image selbst könnte genausogut errechnet worden sein, oder leer, oder ... Image enthält lediglich Informationen wie ein Bild dargestellt wird, nicht aber Meta-Informationen.

Ebenius
 
hallo,

danke für die schnell Antwort.

Schade ich dachte, wenn ich ein Bild mit dem Imagedescriptor erzeugen kann. kann ich über diesen Weg auch irgendwie den Dateinamen zurückbekommen. 🙁

Aber ok, dann bleibt mir wohl doch nur der Pixelvergleich.
 
Du könntest dein Problem anderweitig lösen indem du zB eine HashMap oder eine andere Datenstruktur nimmst, die deinem Problem angemessen ist.
Der folgende Code ist nur ein Beispiel, wie es in einem meiner Projekte gemacht wird. Allerdings brauchen wir da nicht mehr den Pfad eines Bildes. Vielleicht bringt es dich ja auf eine Idee.

Java:
public class ImageHandler
{
    protected HashMap<String, Image> imageMap = new HashMap<String, Image>();

    public Image loadImage(String imgName)
    {
        Image img = imageMap.get(imgName);
        if (img == null)
        {
            img = Activator.getImageDescriptor( imgName ).createImage();
            imageMap.put(imgName, img);
        }
        return img;
    }

    public String getImagePath(Image img)
    {
        // diese Richtung ist bei der HashMap eben doof... ;)
        for ( String key : imageMap.keySet() )
        {
            if ( imageMap.get(key).equals(img) )
                return key;
        }
        return null;
    }
                
}
 
Du könntest auch einfach eine Klasse mit statischen Member machen die deine Bildernamen enthalten
 
statisch hier im Sinne von festes Klassenattribut, hoffentlich nicht static? 😉

und um auch zur Map noch meinen Senf hinzuzugeben:
auch eine Map<Image,String> ist denkbar,
ist sicher schneller, wenn man diese Richtung braucht
 
ich dachte es ginge um

public class ImageWithMeta {

public ImageWithMeta(Image image, String name) {
// in Klassenattributen speichern
}

}

meist du Konstanten?
public static String LOCKED = "icons/locked.gif";
wie könnten Konstanten bei der Zuordnung zu einem beliebigen Bild helfen?
 
ich dachte es ginge um

public class ImageWithMeta {

public ImageWithMeta(Image image, String name) {
// in Klassenattributen speichern
}

}

meist du Konstanten?
public static String LOCKED = "icons/locked.gif";
wie könnten Konstanten bei der Zuordnung zu einem beliebigen Bild helfen?

Ja dachte an Konstanten. Zu einem beliebigen Bild bringt es natürlich nichts.

Ja klar wenn sie eine eigene Image Klasse macht dann natürlich Klassenattributen.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben