Java 9 API de Imagen Multiresolución: Simplificar Gráficos Responsivos
Con Java 9, se ha introducido una nueva API de imagen multiresolución que soporta múltiples imágenes con variantes de diferente resolución. Esta API permite que un conjunto de imágenes con diferente resolución se use como una sola imagen multiresolución. A continuación se muestran las operaciones principales de la imagen multiresolución.
Image getResolutionVariant(double destImageWidth, double destImageHeight) - Obtiene una imagen específica que es la mejor variante para representar esta imagen lógica en el tamaño indicado.
List<Image> getResolutionVariants() - Obtiene una lista legible de todas las variantes de resolución.
Ejemplo
import java.io.IOException;
import java.net.URL;
import java.net.MalformedURLException;
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, MalformedURLException {
List<String> imgUrls = List.of(
"https://www.tutorialspoint.com/java9/images/logo.png",
"https://www.tutorialspoint.com/java9/images/mini_logo.png",
"https://www.tutorialspoint.com/java9/images/large_logo.png");
List<Image> images = new ArrayList<Image>();
for(String url : imgUrls) {
images.add(ImageIO.read(new URL(url)));
}
// Leer todas las imágenes en una imagen multiresolución
MultiResolutionImage multiResolutionImage = new BaseMultiResolutionImage(images.toArray(new Image[0]));
// Obtener todas las variantes de imágenes
List<Image> variants = multiResolutionImage.getResolutionVariants();
System.out.println("Número total de imágenes: " + variants.size());
for(Image img : variants) {
System.out.println(img);
}
// Obtener una variante de imagen específica para cada tamaño indicado
Image variant1 = multiResolutionImage.getResolutionVariant(156, 45);
System.out.printf("\nImagen para destino[%d,%d]: [%d,%d]", 156, 45, variant1.getWidth(null), variant1.getHeight(null));
Image variant2 = multiResolutionImage.getResolutionVariant(311, 89);
System.out.printf("\nImagen para destino[%d,%d]: [%d,%d]", 311, 89, variant2.getWidth(null), variant2.getHeight(null));
Image variant3 = multiResolutionImage.getResolutionVariant(622, 178);
System.out.printf("\nImagen para destino[%d,%d]: [%d,%d]", 622, 178, variant3.getWidth(null), variant3.getHeight(null));
Image variant4 = multiResolutionImage.getResolutionVariant(300, 300);
System.out.printf("\nImagen para destino[%d,%d]: [%d,%d]", 300, 300, variant4.getWidth(null), variant4.getHeight(null));
}
}
Salida
Número total de imágenes: 3
BufferedImage@7ce6a65d: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space =java.awt.color.ICC_ColorSpace@548ad73b transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width =311 height = 89 #numDataElements 4 dataOff[0] = 3
BufferedImage@4c762604: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space =java.awt.color.ICC_ColorSpace@548ad73b transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width =156 height = 45 #numDataElements 4 dataOff[0] = 3
BufferedImage@2641e737: type = 6 ColorModel: #pixelBits = 32 numComponents = 4 color space =java.awt.color.ICC_ColorSpace@548ad73b transparency = 3 has alpha = true isAlphaPre = false ByteInterleavedRaster: width =622 height = 178 #numDataElements 4 dataOff[0] = 3
Imagen para destino[156,45]: [311,89]
Imagen para destino[311,89]: [311,89]
Imagen para destino[622,178]: [622,178]
Imagen para destino[300,300]: [622,178]
Java
- Dominar Operadores en Java: Tipos, Sintaxis y Ejemplos Prácticos
- Comentarios en Java: Tipos, Uso y Mejores Prácticas
- Dominar el Bucle for Mejorado en Java: Sintaxis, Ejemplos y Mejores Prácticas
- Dominar Strings en Java: Creación, Métodos y Mejores Prácticas
- Dominando interfaces en Java: Conceptos, implementación y mejores prácticas
- Dominando las clases internas anónimas en Java: Definición, sintaxis y ejemplos prácticos
- Dominando Try‑with‑Resources en Java: Gestión automática de recursos explicada
- Anotaciones en Java explicadas: Tipos, ubicación y ejemplos prácticos
- Aserciones en Java: Guía práctica para detectar bugs y asegurar fiabilidad del código
- Java 9 (JDK 9) – Características y Beneficios Clave
- Java 9 API de Procesos: Mejoras Clave y Nuevas Características