Maison  >  Article  >  Java  >  Comment contrôler le niveau de compression JPEG lors de l'enregistrement d'images à l'aide d'ImageIO en Java ?

Comment contrôler le niveau de compression JPEG lors de l'enregistrement d'images à l'aide d'ImageIO en Java ?

DDD
DDDoriginal
2024-10-24 21:56:02257parcourir

How to Control JPEG Compression Level When Saving Images Using ImageIO in Java?

Comment définir le niveau de compression JPEG à l'aide d'ImageIO en Java

ImageIO, une partie de l'API Java pour Image I/O (JAII), fournit un moyen pratique de lire et écrire des images dans divers formats, y compris JPEG. Cependant, par défaut, ImageIO n'offre pas de contrôle direct sur le niveau de compression JPEG. Cet article explique comment surmonter cette limitation et définir le niveau de compression souhaité lors de l'enregistrement d'une image tamponnée en tant que fichier JPEG.

Fonction Java pour enregistrer une image tamponnée au format JPEG

La fonction Java fournie, getScreenShot, capture une BufferedImage et l'enregistre sous forme de fichier JPEG. Cependant, il ne spécifie aucun paramètre de compression.

<code class="java">public static void getScreenShot(BufferedImage capture, Path folder, String filename) {
        try {
            ImageIO.write(capture, "jpeg", new File(folder.toString()+"/"+filename+".jpg"));
        } catch (AWTException | IOException ex) {
            Logger.getLogger(ScreenShotMaker.class.getName()).log(Level.SEVERE, null, ex);
        }
}</code>

Définition du niveau de compression JPEG

Pour définir le niveau de compression JPEG, vous devez accéder à l'objet ImageWriteParam, qui contient des paramètres contrôlant le processus d’encodage d’images. Voici un extrait plus détaillé :

<code class="java">ImageWriter jpgWriter = ImageIO.getImageWritersByFormatName("jpg").next();
ImageWriteParam jpgWriteParam = jpgWriter.getDefaultWriteParam();
jpgWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
jpgWriteParam.setCompressionQuality(0.7f);</code>

En définissant compressionMode sur MODE_EXPLICIT, vous contrôlez explicitement le niveau de compression. La valeur transmise à compressionQuality détermine le niveau de compression souhaité, 1,0f représentant la qualité maximale et 0,0f représentant la compression maximale.

Considérations supplémentaires

  • ImageWriter.setOutput doit recevoir un ImageOutputStream.
  • FileImageOutputStream et MemoryCacheImageOutputStream sont des implémentations préférées dans la plupart des cas.

En incorporant ces améliorations, vous pouvez personnaliser le niveau de compression JPEG pour répondre à vos besoins spécifiques tout en enregistrant des images à l'aide d'ImageIO en Java.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn