Об этом проекте

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.