Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Java 9 Multi-Resolution Image API: адаптивная графика

Java 9 вводит Multi-Resolution Image API — набор изображений разных разрешений, представленных как единое логическое изображение.

Основные операции

Пример

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/images/logo.png",
            "https://example.com/images/mini_logo.png",
            "https://example.com/images/large_logo.png"
        );
        List<Image> images = new ArrayList<>();
        for (String url : imgUrls) {
            images.add(ImageIO.read(new URL(url)));
        }

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

        // Все варианты
        List<Image> variants = mri.getResolutionVariants();
        System.out.println("Total images: " + variants.size());
        for (Image img : variants) System.out.println(img);

        // Выбор под конкретный размер
        Image v1 = mri.getResolutionVariant(156, 45);
        System.out.printf("Image for [156,45]: [%d,%d]%n", v1.getWidth(null), v1.getHeight(null));
        Image v2 = mri.getResolutionVariant(311, 89);
        System.out.printf("Image for [311,89]: [%d,%d]%n", v2.getWidth(null), v2.getHeight(null));
        Image v3 = mri.getResolutionVariant(622, 178);
        System.out.printf("Image for [622,178]: [%d,%d]%n", v3.getWidth(null), v3.getHeight(null));
        Image v4 = mri.getResolutionVariant(300, 300);
        System.out.printf("Image for [300,300]: [%d,%d]%n", v4.getWidth(null), v4.getHeight(null));
    }
}

Вывод

Total number of images: 3
BufferedImage@... width=311 height=89 ...
BufferedImage@... width=156 height=45 ...
BufferedImage@... width=622 height=178 ...

Image for destination[156,45]: [311,89]
Image for destination[311,89]: [311,89]
Image for destination[622,178]: [622,178]
Image for destination[300,300]: [622,178]

API автоматически подбирает наилучший вариант (ближайший по размеру, не меньший запрошенного). Упрощает responsive UI и печать.

java

  1. Освоение операторов Java: типы, синтаксис и практические примеры
  2. Комментарии в Java: типы, использование и лучшие практики
  3. Освоение улучшенного цикла for в Java: синтаксис, примеры и лучшие практики
  4. Освоение строк в Java: создание, методы и лучшие практики
  5. Интерфейсы в Java: концепции, реализация и лучшие практики
  6. Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
  7. Try-with-resources в Java: автоматическое управление ресурсами
  8. Аннотации в Java: типы, размещение и практические примеры
  9. Assertions в Java: практическое руководство по обнаружению багов и обеспечению надежности кода
  10. Java 9 (JDK 9): ключевые возможности и преимущества