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));
}
12
demandé sur ubernoob 2010-04-27 16:55:42

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.

2
répondu leonbloy 2010-04-27 20:38:27

Vous pouvez essayer pngtastic. C'est un optimiseur d'image java png pur qui peut rétrécir les images PNG mai jusqu'à un certain degré.

2
répondu depsypher 2013-01-14 04:41:34

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.

1
répondu aioobe 2016-04-27 15:44:55