Class ImageLoader

java.lang.Object
schule.ngb.zm.util.io.ImageLoader

public final class ImageLoader extends Object
Eine Hilfsklasse mit Klassenmethoden, um Bilder zu laden.

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

    Fields
    Modifier and Type
    Field
    Description
    static boolean
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    Aktiviert den Cache.
    static void
    Leer den Cache und löschte alle bisher gespeicherten Bilder.
    Erstellt ein BufferedImage mit demselben Inhalt wie das angegebene Image.
    Erstellt eine exakte Kopie des angegebenen Bildes als neues Objekt.
    createImage(int width, int height)
    Erstellt ein neues, leeres BufferedImage passend für dieses Anzeigegerät.
    createImage(int width, int height, int type)
    Erstellt ein neues, leeres BufferedImage passend für dieses Anzeigegerät.
    static void
    Deaktiviert den Cache.
    static void
    Deaktiviert den Cache für die angegebene Quelle.
    static void
    Entfernt das Bild zum angegebenen Namen aus dem Cache.
    static boolean
    Prüft, ob zum angegebenen Namen ein Bild im Cache gespeichert ist.
    loadImage(String source)
    Lädt ein Bild von der angegebenen Quelle source.
    loadImage(String source, boolean caching)
    Lädt ein Bild von der angegebenen Quelle source und gibt das Bild zurück oder null, wenn das Bild nicht geladen werden konnte.
    static void
    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
    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
    saveImage(Image image, File file)
    Speichert das angegebene Bild in der angegebenen Datei auf der Festplatte.
    static void
    saveImage(Image image, File file, boolean overwriteIfExists)
    Speichert das angegebene Bild in der angegebenen Datei auf der Festplatte.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • caching

      public static boolean caching
  • Method Details

    • loadImage

      public static BufferedImage loadImage(String source)
      Lädt ein Bild von der angegebenen Quelle source.

      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, wird null 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

      public static BufferedImage loadImage(String source, boolean caching)
      Lädt ein Bild von der angegebenen Quelle source und gibt das Bild zurück oder null, wenn das Bild nicht geladen werden konnte. Ist ein Bild mit der angegebenen Quelle im Cache, wird das gespeicherte Bild zurückgegeben. Dies kann mit caching = 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

      public static boolean preloadImage(String name, String source)
      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) mit name 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

      public static void preloadImage(String name, BufferedImage img)
      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) mit name als Quelle das gespeicherte Bild zurückgeben.

      Parameters:
      name - Name des Bildes im Zwischenspeicher.
      img - ZU speicherndes Bild.
    • isCached

      public static boolean isCached(String name)
      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, sonst false.
    • invalidateCache

      public static void invalidateCache(String name)
      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

      public static void disableCache(String name)
      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 derselben source), 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

      public static BufferedImage copyImage(BufferedImage image)
      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

      public static BufferedImage copyImage(Image image)
      Erstellt ein BufferedImage mit demselben Inhalt wie das angegebene Image.
      Parameters:
      image - Das Originalbild.
      Returns:
      Eine exakte Kopie des Originals.
    • saveImage

      public static void saveImage(Image image, File file) 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.
      Throws:
      NullPointerException - Falls image oder file null ist.
      IOException - Falls es einen Fehler beim Speichern gab.
    • saveImage

      public static void saveImage(Image 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 - Bei true wird eine vorhandene Datei überschrieben, bei false wird eine IOException geworfen, wenn die Datei schon existiert.
      Throws:
      NullPointerException - Falls image oder file null ist.
      IOException - Falls es einen Fehler beim Speichern gab.
    • saveImage

      public static void saveImage(BufferedImage image, File file) 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.
      Throws:
      NullPointerException - Falls image oder file 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 - Bei true wird eine vorhandene Datei überschrieben, bei false wird eine IOException geworfen, wenn die Datei schon existiert.
      Throws:
      NullPointerException - Falls image oder file null ist.
      IOException - Falls es einen Fehler beim Speichern gab.
    • createImage

      public static BufferedImage createImage(int width, int height)
      Erstellt ein neues, leeres BufferedImage passend für dieses Anzeigegerät.
      Parameters:
      width - Breite des leeren Bildes.
      height - Höhe des leeren Bildes.
      Returns:
      Ein neues, leeres Bild.
    • createImage

      public static BufferedImage createImage(int width, int height, int type)
      Erstellt ein neues, leeres BufferedImage 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.