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

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

Patricia Arquette
Patricia Arquetteoriginal
2024-10-25 04:28:30450parcourir

How to Control JPEG Compression Level Using ImageIO in Java?

Définition du niveau de compression JPEG à l'aide d'ImageIO en Java

En Java, ImageIO est une bibliothèque polyvalente pour la manipulation d'images. Cependant, il lui manque une méthode explicite pour définir le niveau de compression JPEG lors de l'écriture d'images. Cet article répond à cette limitation en montrant comment ajuster la qualité de la compression à l'aide de l'API ImageIO.

Solution

Pour contrôler la compression JPEG, une approche consiste à utiliser la classe ImageWriteParam. Les étapes suivantes décrivent le processus :

  1. Obtenez l'objet ImageWriter pour le format JPEG.
  2. Récupérez l'ImageWriteParam par défaut pour ImageWriter.
  3. Définissez le mode de compression sur ImageWriteParam.MODE_EXPLICIT.
  4. Spécifiez la qualité de compression souhaitée entre 0,0f (compression maximale) et 1,0f (qualité maximale).
  5. Créez un ImageOutputStream pour gérer la sortie.
  6. Définissez la sortie ImageWriter sur ImageOutputStream.
  7. Créez un objet IIOImage avec les données d'image.
  8. Écrivez l'IIOImage sur ImageOutputStream à l'aide du ImageWriteParam personnalisé.
  9. Éliminez ImageWriter .

Exemple de code :

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

ImageOutputStream outputStream = new FileImageOutputStream(new File("output.jpg"));
jpgWriter.setOutput(outputStream);
IIOImage outputImage = new IIOImage(image, null, null);
jpgWriter.write(null, outputImage, jpgWriteParam);
jpgWriter.dispose();</code>

Cet extrait de code définit explicitement la qualité de compression sur 0,7, produisant une image avec un équilibre entre la qualité et la taille du fichier. .

Remarque :

Les exemples supposent l'existence d'une variable image et d'un objet File pour écrire la sortie. De plus, la classe MemoryCacheImageOutputStream est une alternative à FileImageOutputStream lors de l'écriture dans une mémoire tampon.

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