Maison >Java >javaDidacticiel >Comment obtenir un contrôle explicite du niveau de compression pour les images JPEG avec ImageIO ?
Lors de l'enregistrement d'images au format JPEG à l'aide d'ImageIO, il est courant de vouloir ajuster le niveau de compression pour contrôler l'équilibre entre la qualité de l'image. et la taille du fichier. Cependant, la fonctionnalité ImageIO par défaut ne dispose pas de cette option.
Pour définir explicitement le niveau de compression, nous devons approfondir l'API ImageIO. L'utilisation d'ImageIO.getImageWritersByFormatName("jpg").next() donne accès à un ImageWriter, qui nous permet de modifier des paramètres spécifiques pour le format JPEG.
La classe ImageWriteParam permet de contrôler les paramètres de compression. En définissant ImageWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT), nous activons le paramètre explicite du niveau de compression.
Pour spécifier le niveau de compression, utilisez ImageWriteParam.setCompressionQuality(0.7f) (où 0,7f représente le niveau de compression souhaité). Une valeur plus proche de 1,0 indique une qualité supérieure et moins de compression, tandis qu'une valeur plus proche de 0,0 correspond à une qualité inférieure et à une compression plus élevée.
La méthode ImageWriter.setOutput() nécessite un ImageOutputStream, qui nous permet de contrôler la taille de l'image. destination. Utilisez soit FileImageOutputStream pour la sortie du fichier, soit MemoryCacheImageOutputStream pour la sortie vers une mémoire tampon.
Pour enregistrer le JPEG modifié, utilisez jpgWriter.write(null, outputImage, jpgWriteParam), où outputImage est une IIOImage contenant les données de l'image et jpgWriteParam. sont les paramètres de compression configurés précédemment.
Cette approche fournit un contrôle précis des niveaux de compression JPEG, vous permettant d'optimiser la qualité de l'image et la taille du fichier pour vos besoins spécifiques.
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!