Class ImageLoader
Bilder können von verschiedenen Quellen als Image
geladen werden. Die
Objekte werden in einem internen Cache gespeichert und nachfolgende Versuche,
dieselbe Quelle zu laden, werden aus dem Cache bedient.
-
Field Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
Aktiviert den Cache.static void
Leer den Cache und löschte alle bisher gespeicherten Bilder.static BufferedImage
Erstellt einBufferedImage
mit demselben Inhalt wie das angegebeneImage
.static BufferedImage
copyImage
(BufferedImage image) Erstellt eine exakte Kopie des angegebenen Bildes als neues Objekt.static BufferedImage
createImage
(int width, int height) Erstellt ein neues, leeresBufferedImage
passend für dieses Anzeigegerät.static BufferedImage
createImage
(int width, int height, int type) Erstellt ein neues, leeresBufferedImage
passend für dieses Anzeigegerät.static void
Deaktiviert den Cache.static void
disableCache
(String name) Deaktiviert den Cache für die angegebene Quelle.static void
invalidateCache
(String name) Entfernt das Bild zum angegebenen Namen aus dem Cache.static boolean
Prüft, ob zum angegebenen Namen ein Bild im Cache gespeichert ist.static BufferedImage
Lädt ein Bild von der angegebenen Quellesource
.static BufferedImage
Lädt ein Bild von der angegebenen Quelle source und gibt das Bild zurück odernull
, wenn das Bild nicht geladen werden konnte.static void
preloadImage
(String name, BufferedImage img) Speichert das angegebene Bild unter dem angegebenen Namen im Cache.static boolean
preloadImage
(String name, String source) Lädt ein Bild aus der angegebenen Quelle unter dem angegebenen Namen in den Cache.static void
saveImage
(BufferedImage image, File file) Speichert das angegebene Bild in der angegebenen Datei auf der Festplatte.static void
saveImage
(BufferedImage image, File file, boolean overwriteIfExists) Speichert das angegebene Bild in der angegebenen Datei auf der Festplatte.static void
Speichert das angegebene Bild in der angegebenen Datei auf der Festplatte.static void
Speichert das angegebene Bild in der angegebenen Datei auf der Festplatte.
-
Field Details
-
caching
public static boolean caching
-
-
Method Details
-
loadImage
Lädt ein Bild von der angegebenen Quellesource
.Die Bilddatei wird nach den Regeln von
ResourceStreamProvider.getInputStream(String)
gesucht und geöffnet. Tritt dabei ein Fehler auf oder konnte keine passende Datei gefunden werden, wirdnull
zurückgegeben.Ist der
Cache aktiviert
und ein Bild mit der angegebenen Quelle schon vorhanden, wird das gespeicherte Bild zurückgegeben.- Parameters:
source
-- Returns:
- See Also:
-
loadImage
Lädt ein Bild von der angegebenen Quelle source und gibt das Bild zurück odernull
, wenn das Bild nicht geladen werden konnte. Ist ein Bild mit der angegebenen Quelle im Cache, wird das gespeicherte Bild zurückgegeben. Dies kann mitcaching = false
verhindert werden.Wurde das Caching global deaktiviert, kann mit
caching = true
das Bild trotzdem aus dem Cache geladen werden, wenn es vorhanden ist.- Parameters:
source
- Die Quelle des Bildes.caching
- Ob das Bild (falls vorhanden) aus dem Zwischenspeicher geladen werden soll.- Returns:
-
preloadImage
Lädt ein Bild aus der angegebenen Quelle unter dem angegebenen Namen in den Cache.Der
name
kann beliebig gewählt werden. Existiert unter dem Namen schon ein Bild im Zwischenspeicher, wird dieses überschrieben.Wenn der Cache aktiviert ist, werden zukünftige Aufrufe von
loadImage(String)
mitname
als Quelle das gespeicherte Bild zurückgeben.- Parameters:
name
- Name des Bildes im Zwischenspeicher.source
- Quelle, aus dem das Bild geladen werden soll.- Returns:
true
, wenn das Bild erfolgreich geladen wurde,false
sonst.- See Also:
-
preloadImage
Speichert das angegebene Bild unter dem angegebenen Namen im Cache.Existiert zu
name
schon ein Bild im Zwischenspeicher (ImageLoader.isCached(name) == true
), dann wird dieses überschrieben.Wenn der Cache aktiviert ist, werden zukünftige Aufrufe von
loadImage(String)
mitname
als Quelle das gespeicherte Bild zurückgeben.- Parameters:
name
- Name des Bildes im Zwischenspeicher.img
- ZU speicherndes Bild.
-
isCached
Prüft, ob zum angegebenen Namen ein Bild im Cache gespeichert ist.- Parameters:
name
- Name des Bildes im Cache.- Returns:
true
, wenn es ein Bild zum Namen gibt, sonstfalse
.
-
invalidateCache
Entfernt das Bild zum angegebenen Namen aus dem Cache. Gibt es zum Namen kein Bild im Zwischenspeicher, dann passiert nichts.- Parameters:
name
- Name des Bildes im Cache.
-
disableCache
Deaktiviert den Cache für die angegebene Quelle.Selbst wenn der
Cache aktiviert
ist, wird das Bild zur angegebenen Quelle niemals zwischengespeichert und immer neu geladen.- Parameters:
name
- Die Quelle des Bildes.
-
clearCache
public static void clearCache()Leer den Cache und löschte alle bisher gespeicherten Bilder.Auch vorher mit
disableCache(String)
verhinderte Caches werden gelöscht und müssen neu gesetzt werden. -
activateCache
public static void activateCache()Aktiviert den Cache.Der Cache ist ein Zwischenspeicher für geladene Bilder. Wenn er aktiviert ist (Standard), dann werden mit dem
ImageLoader
geladene Bilder im Zwischenspeicher abgelegt. Bei jedem folgenden laden desselben Bildes (bzw. eines Bildes mit derselbensource
), wird das gespeicherte Bild zurückgegeben und nicht komplett neu geladen.Wichtig: Bildreferenzen, die aus dem Cache geladen werden, verweisen alle auf dasselbe Objekt. Änderungen schlagen sich daher in allen anderen Versionen des Bildes nieder (inklusive dem Bild im Zwischenspeicher). Für Änderungen sollte daher immer
eine Kopie
des Bildes erstellt werden:BufferedImage originalImage = ImageLoader.loadImage("assets/image.gif"); BufferedImage copiedImage = ImageLoader.copyImage(originalImage);
Alternativ kann der Cache umgangen werden, indem
loadImage(String, boolean)
verwendet wird. -
deactivateCache
public static void deactivateCache()Deaktiviert den Cache.- See Also:
-
copyImage
Erstellt eine exakte Kopie des angegebenen Bildes als neues Objekt.Die Methode ist hilfreich, wenn ein Bild aus dem
Cache
geladen wurde und dann verändert werden soll, ohne den Cache (oder andere Referenzen auf das Bild) zu verändern.- Parameters:
image
- Das Originalbild.- Returns:
- Eine exakte Kopie des Originals.
-
copyImage
Erstellt einBufferedImage
mit demselben Inhalt wie das angegebeneImage
.- Parameters:
image
- Das Originalbild.- Returns:
- Eine exakte Kopie des Originals.
-
saveImage
Speichert das angegebene Bild in der angegebenen Datei auf der Festplatte.- Parameters:
image
- Das zu speichernde Bild. Falls die Datei schon existiert, wird sie überschrieben.file
- Die Zieldatei.- Throws:
NullPointerException
- Fallsimage
oderfile
null
ist.IOException
- Falls es einen Fehler beim Speichern gab.
-
saveImage
Speichert das angegebene Bild in der angegebenen Datei auf der Festplatte.- Parameters:
image
- Das zu speichernde Bild. Falls die Datei schon existiert, wird sie überschrieben.file
- Die Zieldatei.overwriteIfExists
- Beitrue
wird eine vorhandene Datei überschrieben, beifalse
wird eineIOException
geworfen, wenn die Datei schon existiert.- Throws:
NullPointerException
- Fallsimage
oderfile
null
ist.IOException
- Falls es einen Fehler beim Speichern gab.
-
saveImage
Speichert das angegebene Bild in der angegebenen Datei auf der Festplatte.- Parameters:
image
- Das zu speichernde Bild. Falls die Datei schon existiert, wird sie überschrieben.file
- Die Zieldatei.- Throws:
NullPointerException
- Fallsimage
oderfile
null
ist.IOException
- Falls es einen Fehler beim Speichern gab.
-
saveImage
public static void saveImage(BufferedImage image, File file, boolean overwriteIfExists) throws IOException Speichert das angegebene Bild in der angegebenen Datei auf der Festplatte.- Parameters:
image
- Das zu speichernde Bild. Falls die Datei schon existiert, wird sie überschrieben.file
- Die Zieldatei.overwriteIfExists
- Beitrue
wird eine vorhandene Datei überschrieben, beifalse
wird eineIOException
geworfen, wenn die Datei schon existiert.- Throws:
NullPointerException
- Fallsimage
oderfile
null
ist.IOException
- Falls es einen Fehler beim Speichern gab.
-
createImage
Erstellt ein neues, leeresBufferedImage
passend für dieses Anzeigegerät.- Parameters:
width
- Breite des leeren Bildes.height
- Höhe des leeren Bildes.- Returns:
- Ein neues, leeres Bild.
-
createImage
Erstellt ein neues, leeresBufferedImage
passend für dieses Anzeigegerät.- Parameters:
width
- Breite des neuen Bildes.height
- Höhe des neuen Bildes.type
-Typ
des neuen Bildes.- Returns:
- Ein neues, leeres Bild.
-