comment compresser une image PNG en utilisant Java
Salut je voudrais savoir s'il y a un moyen en Java de réduire la taille d'une image (utiliser n'importe quelle sorte de compression) qui a été chargée en tant que BufferedImage et qui va être sauvegardée en tant que PNG.
peut-être une sorte d'imagewriteparam png? Je n'ai rien trouvé d'utile, alors je suis coincé.
heres un exemple de la façon dont l'image est chargé et enregistré
public static BufferedImage load(String imageUrl) {
Image image = new ImageIcon(imageUrl).getImage();
bufferedImage = new BufferedImage(image.getWidth(null),
image.getHeight(null),
BufferedImage.TYPE_INT_ARGB);
Graphics2D g2D = bufferedImage.createGraphics();
g2D.drawImage(image, 0, 0, null);
return bufferedImage;
}
public static void storeImageAsPng(BufferedImage image, String imageUrl) throws IOException {
ImageIO.write(image, "png", new File(imageUrl));
}
3 réponses
Si it's going to be saved as PNG
, la compression se fera à ce stade. PNG a un algorithme de compression sans perte (essentiellement la prédiction suivie par la compression de lempel-ziv) avec quelques paramètres réglables (types de "filtres") et peu d'impact sur le montant de la compression - en général, la valeur par défaut sera optimale.
regardez ImageWriterParam
classe dans le même package que le ImageIO
classe. Il parle de compression.
https://docs.oracle.com/javase/7/docs/api/javax/imageio/ImageWriteParam.html
Aussi, regardez l'exemple à http://exampledepot.com/egs/javax.imageio/JpegWrite.html et voir si elle traduit bien pour les fichiers PNG.