Salut !

Je cherche à diminuer la qualité d'une image PNG afin qu'elle prenne moins de place physiquement.

Je le fais déjà avec des images JPG en utilisant l'API JAI (Java Advanced Imaging).
Le code ressemble à ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
ImageEncodeParam param;
if (format.equalsIgnoreCase("JPEG")) {
            param = new JPEGEncodeParam();
            ((JPEGEncodeParam)param).setQuality(quality);    
} 
 
try {
            JAI.create("encode", img, stream, format, param);
} catch (Exception e) {
            throw new ImagingException("Error encoding Image", e);
}
img étant un BufferedImage (mon image source) et stream un OutputStream (pour la sortie).

Malheureusement pour les fichiers PNG, l'encodeur PNGEncodeParam.RGB ne permet pas d'utiliser la même méthode setQuality().

Quelqu'un aurait-il une idée ?
merci