Sobre o projeto

O TwelveMonkeys ImageIO é um conjunto de plug-ins e extensões para o pacote javax.imageio da plataforma Java. Seu objetivo declarado é adicionar suporte a formatos de arquivo de imagem não cobertos pelo JDK, para que os aplicativos possam ler dados encontrados "in the wild" e manter acesso a formatos legados. Formatos suportados (leitura/gravação indicadas na tabela do README): - Plug-in BMP: BMP (leitura/gravação), CUR (leitura), ICO (leitura/gravação) - Plug-in JPEG: JPEG (leitura/gravação), JPEG Lossless (leitura) - Plug-in TIFF: TIFF (leitura/gravação), BigTIFF (leitura/gravação) - Plug-in PSD: PSD (leitura, gravação limitada), PSB (leitura) - Plug-in PNM: PAM, PBM, PGM, PPM, PFM - Plug-in PCX: PCX, DCX - Plug-in PICT: PICT, PNTG - Outros: DDS, HDR, ICNS, IFF, SGI, TGA, WebP (leitura), XWD, Thumbs.db - Baseados em Batik: SVG e WMF (leitura), exigindo Apache Batik GIF, PNG e WBMP já são tratados pelos plug-ins padrão do JDK; para BMP, JPEG e TIFF o projeto oferece suporte estendido e recursos extras. Uso: após adicionar os JARs, os plug-ins são descobertos automaticamente em tempo de execução, então a leitura básica é ImageIO.read(file) e a gravação é ImageIO.write(image, format, file). Exemplos avançados no README mostram como obter instâncias de ImageReader/ImageWriter, definir ImageReadParam/ImageWriteParam, ler miniaturas e metadados, e consultar dimensões sem carregar a imagem completa. Utilitários adicionais incluem suporte a caminhos de recorte da Adobe via com.twelvemonkeys.imageio.path.Paths, uma operação de redimensionamento de imagem ResampleOp com vários filtros, e DiffusionDither para dithering Floyd-Steinberg para IndexColorModel. O README também descreve a leitura de dados parcialmente utilizáveis de imagens danificadas fornecendo um BufferedImage de destino. Instalação: coordenadas Maven sob o groupId com.twelvemonkeys.imageio (por exemplo, imageio-jpeg, imageio-tiff), ou JARs manuais no classpath. Para aplicações web, o IIOProviderContextListener é recomendado para lidar com o carregamento/descarregamento de plug-ins, com uma variante de classificador Jakarta disponível. Ao construir JARs "fat", os arquivos SPI em META-INF/services devem ser mesclados (por exemplo, com o Maven Shade ServicesResourceTransformer). A construção usa Maven (mvn package); o README observa o Oracle JDK 8.x como o JDK de construção recomendado e menciona possíveis diferenças de teste sob OpenJDK. O projeto é publicado no Maven Central e vincula aos badges de CI, CodeQL, OpenSSF Scorecard e Best Practices.