Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Java 9 Multi-Resolution Image API: Simplifique Gráficos Responsivos

Com o Java 9, uma nova Multi-Resolution Image API foi introduzida, suportando múltiplas imagens com variantes de resolução diferentes. Esta API permite que um conjunto de imagens com diferentes resoluções seja usado como uma única imagem multiresolução. Principais operações:

Exemplo

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<>();
        for (String url : imgUrls) {
            images.add(ImageIO.read(new URL(url)));
        }

        // Lê todas as imagens em uma imagem multiresolução
        MultiResolutionImage multiResolutionImage = new BaseMultiResolutionImage(
            images.toArray(new Image[0]));

        // Obtém todas as variantes
        List<Image> variants = multiResolutionImage.getResolutionVariants();
        System.out.println("Total de imagens: " + variants.size());
        for (Image img : variants) {
            System.out.println(img);
        }

        // Obtém variante específica para cada tamanho indicado
        Image variant1 = multiResolutionImage.getResolutionVariant(156, 45);
        System.out.printf("\nImagem para destino[%d,%d]: [%d,%d]", 156, 45, variant1.getWidth(null), variant1.getHeight(null));

        Image variant2 = multiResolutionImage.getResolutionVariant(311, 89);
        System.out.printf("\nImagem para destino[%d,%d]: [%d,%d]", 311, 89, variant2.getWidth(null), variant2.getHeight(null));

        Image variant3 = multiResolutionImage.getResolutionVariant(622, 178);
        System.out.printf("\nImagem para destino[%d,%d]: [%d,%d]", 622, 178, variant3.getWidth(null), variant3.getHeight(null));

        Image variant4 = multiResolutionImage.getResolutionVariant(300, 300);
        System.out.printf("\nImagem para destino[%d,%d]: [%d,%d]", 300, 300, variant4.getWidth(null), variant4.getHeight(null));
    }
}

Saída

Total de imagens: 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

Imagem para destino[156,45]: [311,89]
Imagem para destino[311,89]: [311,89]
Imagem para destino[622,178]: [622,178]
Imagem para destino[300,300]: [622,178]

A API seleciona automaticamente a melhor variante de resolução para o tamanho de destino solicitado, ideal para UIs responsivas e HiDPI.

Java

  1. Dominando Operadores Java: Tipos, Sintaxe e Exemplos Práticos
  2. Comentários em Java: Tipos, Uso e Boas Práticas
  3. Dominando o Loop for Aprimorado em Java: Sintaxe, Exemplos e Boas Práticas
  4. Dominando Strings em Java: Criação, Métodos e Boas Práticas
  5. Dominando Interfaces em Java: Conceitos, Implementação e Boas Práticas
  6. Dominando Classes Internas Anônimas em Java: Definição, Sintaxe e Exemplos Práticos
  7. Dominando Try-With-Resources em Java: Gerenciamento Automático de Recursos Explicado
  8. Anotações em Java Explicadas: Tipos, Posicionamento e Exemplos Práticos
  9. Asserções em Java: Guia Prático para Detectar Bugs e Garantir Confiabilidade do Código
  10. Java 9 (JDK 9) – Principais Recursos e Benefícios