Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java 9 Multi-Resolution Image API: Responsive Grafiken mit mehreren Auflösungen

Was ist die Multi-Resolution Image API?

Java 9 führt java.awt.image.MultiResolutionImage (Interface) und BaseMultiResolutionImage (Basis-Implementierung) ein. Sie ermöglichen, ein logisches Bild darzustellen, das physisch aus mehreren Auflösungsvarianten besteht. Die Laufzeit wählt automatisch die beste Variante für die angeforderte Darstellungsgröße.

Kern-Methoden

Methode Beschreibung
getResolutionVariant(double w, double h) Liefert die beste Variante für Zielgröße w x h.
getResolutionVariants() Liefert read-only Liste aller Varianten.

Beispiel: Drei Logo-Varianten laden & nutzen

import java.awt.Image;
import java.awt.image.BaseMultiResolutionImage;
import java.awt.image.MultiResolutionImage;
import java.io.IOException;
import java.net.URL;
import java.util.List;
import javax.imageio.ImageIO;

public class MultiResDemo {
    public static void main(String[] args) throws IOException {
        // URLs zu verschiedenen Auflösungen desselben Logos
        List<String> urls = List.of(
            "https://example.com/logo.png",       // Basis
            "https://example.com/logo@2x.png",    // 2x (Retina)
            "https://example.com/logo@3x.png"     // 3x
        );

        // Alle Bilder laden
        List<Image> images = urls.stream()
            .map(url -> ImageIO.read(new URL(url)))
            .toList();

        // MultiResolutionImage erstellen
        MultiResolutionImage mri = new BaseMultiResolutionImage(
            images.toArray(new Image[0])
        );

        // Alle Varianten auflisten
        List<Image> variants = mri.getResolutionVariants();
        System.out.println("Anzahl Varianten: " + variants.size());
        variants.forEach(img -> 
            System.out.printf("  %dx%d%n", img.getWidth(null), img.getHeight(null))
        );

        // Auflösungsspezifische Variante abfragen
        Image v1 = mri.getResolutionVariant(100, 100);
        Image v2 = mri.getResolutionVariant(300, 300);
        Image v3 = mri.getResolutionVariant(600, 600);

        System.out.printf("Für 100x100: %dx%d%n", v1.getWidth(null), v1.getHeight(null));
        System.out.printf("Für 300x300: %dx%d%n", v2.getWidth(null), v2.getHeight(null));
        System.out.printf("Für 600x600: %dx%d%n", v3.getWidth(null), v3.getHeight(null));
    }
}

Typische Ausgabe

Anzahl Varianten: 3
  100x100
  300x300
  600x600
Für 100x100: 100x100
Für 300x300: 300x300
Für 600x600: 600x600

Anwendungsfälle

Wichtige Hinweise

Fazit

Die Multi-Resolution Image API löst ein langjähriges Problem bei der Skalierung von Rastergrafiken in Java-Desktop-Apps – deklarativ, performant & standardkonform.

Java

  1. Java Operatoren meistern: Typen, Syntax und praktische Beispiele
  2. Java Kommentare: Typen, Verwendung und Best Practices
  3. Java Enhanced For-Schleife meistern: Syntax, Beispiele und Best Practices
  4. Java Strings meistern: Erstellung, Methoden und Best Practices
  5. Java-Schnittstellen meistern: Konzepte, Implementierung und Best Practices
  6. Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
  7. Java Try-With-Resources meistern: Automatisches Ressourcenmanagement erklärt
  8. Java Annotations erklärt: Typen, Platzierung und praktische Beispiele
  9. Java Assertions: Praktischer Leitfaden zur Fehlererkennung und Code-Reliabilität
  10. Java 9 (JDK 9): Wichtigste Features & Vorteile – Modularität, JShell, HTTP/2 & mehr