Maison > Java > javaDidacticiel > le corps du texte

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

DDD
Libérer: 2024-10-24 21:56:02
original
263 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!