Java 9 Multi-Resolution Image API: адаптивная графика
Java 9 вводит Multi-Resolution Image API — набор изображений разных разрешений, представленных как единое логическое изображение.
Основные операции
Image getResolutionVariant(double destWidth, double destHeight)— лучший вариант для заданного размера.List<Image> getResolutionVariants()— список всех вариантов.
Пример
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
- Освоение операторов Java: типы, синтаксис и практические примеры
- Комментарии в Java: типы, использование и лучшие практики
- Освоение улучшенного цикла for в Java: синтаксис, примеры и лучшие практики
- Освоение строк в Java: создание, методы и лучшие практики
- Интерфейсы в Java: концепции, реализация и лучшие практики
- Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
- Try-with-resources в Java: автоматическое управление ресурсами
- Аннотации в Java: типы, размещение и практические примеры
- Assertions в Java: практическое руководство по обнаружению багов и обеспечению надежности кода
- Java 9 (JDK 9): ключевые возможности и преимущества