Об этом проекте
TwelveMonkeys ImageIO — это набор плагинов и расширений для пакета javax.imageio платформы Java. Заявленная цель — добавить поддержку форматов файлов изображений, не охваченных JDK, чтобы приложения могли читать данные, встречающиеся «в дикой природе», и сохранять доступ к устаревшим форматам.
Поддерживаемые форматы (чтение/запись указаны в таблице README):
- Плагин BMP: BMP (чтение/запись), CUR (чтение), ICO (чтение/запись)
- Плагин JPEG: JPEG (чтение/запись), JPEG Lossless (чтение)
- Плагин TIFF: TIFF (чтение/запись), BigTIFF (чтение/запись)
- Плагин PSD: PSD (чтение, ограниченная запись), PSB (чтение)
- Плагин PNM: PAM, PBM, PGM, PPM, PFM
- Плагин PCX: PCX, DCX
- Плагин PICT: PICT, PNTG
- Другие: DDS, HDR, ICNS, IFF, SGI, TGA, WebP (чтение), XWD, Thumbs.db
- На основе Batik: SVG и WMF (чтение), требуется Apache Batik
GIF, PNG и WBMP уже обрабатываются стандартными плагинами JDK; для BMP, JPEG и TIFF проект предлагает расширенную поддержку и дополнительные возможности.
Использование: после добавления JAR-файлов плагины обнаруживаются автоматически во время выполнения, поэтому базовое чтение — это ImageIO.read(file), а запись — ImageIO.write(image, format, file). Расширенные примеры в README показывают получение экземпляров ImageReader/ImageWriter, настройку ImageReadParam/ImageWriteParam, чтение миниатюр и метаданных, а также запрос размеров без загрузки полного изображения. Дополнительные утилиты включают поддержку контуров обрезки Adobe через com.twelvemonkeys.imageio.path.Paths, операцию изменения размера изображения ResampleOp с несколькими фильтрами и DiffusionDither для дизеринга Флойда-Стейнберга в IndexColorModel. В README также описывается чтение частично пригодных данных из поврежденных изображений путем предоставления целевого BufferedImage.
Установка: координаты Maven с groupId com.twelvemonkeys.imageio (например, imageio-jpeg, imageio-tiff) или ручное добавление JAR-файлов в classpath. Для веб-приложений рекомендуется IIOProviderContextListener для обработки загрузки/выгрузки плагинов, доступен вариант с классификатором Jakarta. При сборке «fat» JAR-файлов необходимо объединять файлы SPI в META-INF/services (например, с помощью Maven Shade ServicesResourceTransformer).
Сборка выполняется с помощью Maven (mvn package); в README отмечается Oracle JDK 8.x как рекомендуемый JDK для сборки и упоминаются возможные различия в тестах под OpenJDK. Проект опубликован на Maven Central и содержит ссылки на значки CI, CodeQL, OpenSSF Scorecard и Best Practices.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.