Comment faire pour enregistrer une copie optimisée des images png avec java ImageIO?

StackOverflow https://stackoverflow.com/questions/2684866

  •  30-09-2019
  •  | 
  •  

Question

Je suis de la génération des images plein la java et de les enregistrer par le biais de la ImageIO.write méthode comme ceci:

final BufferedImage img = createSomeImage();
ImageIO.write( img, "png", new File( "/some/file.png" );

J'ai été heureux avec les résultats jusqu'à ce que Google firefox addon "Page Speed" m'a dit que je peux économiser jusqu'à 60% de la taille si je optimiser les images.Les images sont des codes QR, leur taille est d'environ 900B chacun et de l'firefox-plugin versions optimisées sont autour de 300B.J'aimerais enregistrer de telles optimisé 300B des Images directement à partir de java.

Alors, voici ma question:Comment faire pour enregistrer une copie optimisée des images png avec java ImageIO?

Était-ce utile?

La solution

Utilisation PngEncoderB pour convertir votre BufferedImage dans un fichier PNG codé tableau d'octets.

Vous pouvez appliquer un filtre, ce qui permet de préparer l'image pour une meilleure optimisation.C'est ce que OptiPNG fait, seulement OptiPNG calcule le filtre qui vous permettra d'obtenir une meilleure compression.

Vous pourriez avoir à essayer de l'appliquer chaque filtre de voir que l'on est toujours mieux pour vous.Avec 2 bits de couleur, je pense que le seul filtre qui pourrait aider est "up", donc je suppose que c'est le seul à utiliser.

Une fois que vous obtenez l'image en PNG codé tableau d'octets, vous pouvez écrire directement dans un fichier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top