Java 9 API Image multi-résolution : Graphiques responsives simplifiés
Java 9 introduit MultiResolutionImage et BaseMultiResolutionImage pour gérer un ensemble d'images à résolutions variées comme une seule image logique.
Opérations principales
Image getResolutionVariant(double width, double height): retourne la meilleure variante pour la taille demandée.List<Image> getResolutionVariants(): liste lisible de toutes les variantes.
Exemple complet
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.awt.Image;
import java.awt.image.MultiResolutionImage;
import java.awt.image.BaseMultiResolutionImage;
import javax.imageio.ImageIO;
public class Tester {
public static void main(String[] args) throws IOException {
List<String> imgUrls = List.of(
"https://example.com/logo.png",
"https://example.com/mini_logo.png",
"https://example.com/large_logo.png"
);
List<Image> images = new ArrayList<>();
for (String url : imgUrls) {
images.add(ImageIO.read(new URL(url)));
}
MultiResolutionImage multiRes = new BaseMultiResolutionImage(
images.toArray(new Image[0])
);
// Lister toutes les variantes
List<Image> variants = multiRes.getResolutionVariants();
System.out.println("Nombre total d'images: " + variants.size());
for (Image img : variants) {
System.out.println(img);
}
// Obtenir la meilleure variante pour chaque taille cible
Image v1 = multiRes.getResolutionVariant(156, 45);
System.out.printf("Image pour [%d,%d]: [%d,%d]%n", 156, 45, v1.getWidth(null), v1.getHeight(null));
Image v2 = multiRes.getResolutionVariant(311, 89);
System.out.printf("Image pour [%d,%d]: [%d,%d]%n", 311, 89, v2.getWidth(null), v2.getHeight(null));
Image v3 = multiRes.getResolutionVariant(622, 178);
System.out.printf("Image pour [%d,%d]: [%d,%d]%n", 622, 178, v3.getWidth(null), v3.getHeight(null));
Image v4 = multiRes.getResolutionVariant(300, 300);
System.out.printf("Image pour [%d,%d]: [%d,%d]%n", 300, 300, v4.getWidth(null), v4.getHeight(null));
}
}
Sortie typique
Nombre total d'images: 3
BufferedImage@...: width=311 height=89 ...
BufferedImage@...: width=156 height=45 ...
BufferedImage@...: width=622 height=178 ...
Image pour [156,45]: [311,89]
Image pour [311,89]: [311,89]
Image pour [622,178]: [622,178]
Image pour [300,300]: [622,178]
L'API choisit automatiquement la meilleure correspondance (la plus petite image ≥ taille demandée). Idéal pour interfaces responsives et HiDPI.
Java
- Maîtriser les opérateurs Java : Types, syntaxe et exemples pratiques
- Commentaires Java : Types, utilisation et bonnes pratiques
- Maîtriser la boucle for améliorée en Java : Syntaxe, exemples et bonnes pratiques
- Maîtriser les chaînes de caractères en Java : Création, méthodes et bonnes pratiques
- Maîtriser les interfaces Java : concepts, implémentation et bonnes pratiques
- Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
- Maîtriser le try-with-resources Java : gestion automatique des ressources expliquée
- Annotations Java expliquées : types, placement et exemples pratiques
- Assertions Java : guide pratique pour détecter les bugs et assurer la fiabilité du code